]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR_ARM/src/Full_Demo/IntQueueTimer.c
Modify RZ/T e2studio directory structure to accommodate an IAR project.
[freertos] / FreeRTOS / Demo / CORTEX_R4F_RZ_T_GCC_IAR_ARM / src / Full_Demo / IntQueueTimer.c
index e6abe0eba782ad3b01c853c0467ede2b6cabf7f6..5aee68febc5d451a64f8011a4741868c9275c79a 100644 (file)
@@ -101,9 +101,16 @@ void vCMT_1_Channel_1_ISR( void );
  * Entry point for the handlers.  These set the pxISRFunction variable to point\r
  * to the C handler for each timer, then branch to the FreeRTOS IRQ handler.\r
  */\r
-static void vCMT_1_Channel_0_ISR_Entry( void ) __attribute__((naked));\r
-static void vCMT_1_Channel_1_ISR_Entry( void ) __attribute__((naked));\r
-\r
+#ifdef __GNUC__\r
+       static void vCMT_1_Channel_0_ISR_Entry( void ) __attribute__((naked));\r
+       static void vCMT_1_Channel_1_ISR_Entry( void ) __attribute__((naked));\r
+#endif /* __GNUC__ */\r
+#ifdef __ICCARM__\r
+       /* IAR requires the entry point to be in an assembly file.  The functions\r
+       are     implemented in $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm. */\r
+       extern void vCMT_1_Channel_0_ISR_Entry( void );\r
+       extern void vCMT_1_Channel_1_ISR_Entry( void );\r
+#endif /* __ICCARM__ */\r
 /*-----------------------------------------------------------*/\r
 \r
 void vInitialiseTimerForIntQueueTest( void )\r
@@ -196,30 +203,38 @@ void vCMT_1_Channel_1_ISR( void )
  * saved in the pxISRFunction variable.  NOTE:  The entry points are naked\r
  * functions - do not add C code to these functions.\r
  */\r
-static void vCMT_1_Channel_0_ISR_Entry( void )\r
-{\r
-       __asm volatile (                                                                                                                \\r
-                                               "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                               "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                               "LDR    r1, =vCMT_1_Channel_0_ISR                       \t\n"   \\r
-                                               "STR    r1, [r0]                                                        \t\n"   \\r
-                                               "POP    {r0-r1}                                                         \t\n"   \\r
-                                               "B              FreeRTOS_IRQ_Handler                                    "\r
-                                       );\r
-}\r
+#ifdef __GNUC__\r
+       /* The IAR equivalent is implemented in\r
+       $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
+       static void vCMT_1_Channel_0_ISR_Entry( void )\r
+       {\r
+               __asm volatile (                                                                                                                \\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
+                                                       "LDR    r1, =vCMT_1_Channel_0_ISR                       \t\n"   \\r
+                                                       "STR    r1, [r0]                                                        \t\n"   \\r
+                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+                                                       "B              FreeRTOS_IRQ_Handler                                    "\r
+                                               );\r
+       }\r
+#endif /* __GNUC__ */\r
 /*-----------------------------------------------------------*/\r
 \r
-static void vCMT_1_Channel_1_ISR_Entry( void )\r
-{\r
-       __asm volatile (                                                                                                                \\r
-                                               "PUSH   {r0-r1}                                                         \t\n"   \\r
-                                               "LDR    r0, =pxISRFunction                                      \t\n"   \\r
-                                               "LDR    r1, =vCMT_1_Channel_1_ISR                       \t\n"   \\r
-                                               "STR    r1, [r0]                                                        \t\n"   \\r
-                                               "POP    {r0-r1}                                                         \t\n"   \\r
-                                               "B              FreeRTOS_IRQ_Handler                                    "\r
-                                       );\r
-}\r
+#ifdef __GNUC__\r
+       /* The IAR equivalent is implemented in\r
+       $PROJ_DIR$/System/IAR/Interrupt_Entry_Stubs.asm */\r
+       static void vCMT_1_Channel_1_ISR_Entry( void )\r
+       {\r
+               __asm volatile (                                                                                                                \\r
+                                                       "PUSH   {r0-r1}                                                         \t\n"   \\r
+                                                       "LDR    r0, =pxISRFunction                                      \t\n"   \\r
+                                                       "LDR    r1, =vCMT_1_Channel_1_ISR                       \t\n"   \\r
+                                                       "STR    r1, [r0]                                                        \t\n"   \\r
+                                                       "POP    {r0-r1}                                                         \t\n"   \\r
+                                                       "B              FreeRTOS_IRQ_Handler                                    "\r
+                                               );\r
+       }\r
+#endif /* __GNUC__ */\r
 \r
 \r
 \r