* 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
* 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