]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/portable/IAR/ARM_CM0/portmacro.h
Make Cortex-M0 set/clear interrupt flag from ISR functions nestable.
[freertos] / FreeRTOS / Source / portable / IAR / ARM_CM0 / portmacro.h
index f9577b29625ac956f974019129e8a4f39db509f4..4f46d038efce683820cc1700b37b279301c341ed 100644 (file)
@@ -119,13 +119,15 @@ extern void vPortYield( void );
 \r
 extern void vPortEnterCritical( void );\r
 extern void vPortExitCritical( void );\r
+extern unsigned long ulSetInterruptMaskFromISR( void );\r
+extern void vClearInterruptMaskFromISR( unsigned long ulMask );\r
 \r
 #define portDISABLE_INTERRUPTS()                               __asm volatile( "cpsid i" )\r
 #define portENABLE_INTERRUPTS()                                        __asm volatile( "cpsie i" )\r
 #define portENTER_CRITICAL()                                   vPortEnterCritical()\r
 #define portEXIT_CRITICAL()                                            vPortExitCritical()\r
-#define portSET_INTERRUPT_MASK_FROM_ISR()              0;portDISABLE_INTERRUPTS()\r
-#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x)   portENABLE_INTERRUPTS();(void)x\r
+#define portSET_INTERRUPT_MASK_FROM_ISR()              ulSetInterruptMaskFromISR()\r
+#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x)   vClearInterruptMaskFromISR( x )\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
@@ -135,6 +137,11 @@ extern void vPortExitCritical( void );
 \r
 #define portNOP()\r
 \r
+/* Suppress warnings that are generated by the IAR tools, but cannot be fixed in\r
+the source code because to do so would cause other compilers to generate\r
+warnings. */\r
+#pragma diag_suppress=Pa082\r
+\r
 #ifdef __cplusplus\r
 }\r
 #endif\r