]> git.sur5r.net Git - freertos/commitdiff
Continue work on RX600 port - work in progress. Added the SET/CLEAR from ISR macros.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 13 Aug 2010 17:49:15 +0000 (17:49 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 13 Aug 2010 17:49:15 +0000 (17:49 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1045 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Source/portable/Renesas/RX600/port.c
Source/portable/Renesas/RX600/portmacro.h

index e41221f618c74a0736edaf83aea8c44c9370d840..8e3cc871d4f5507205eee9534aae78e774b54e6c 100644 (file)
@@ -96,8 +96,6 @@ static void prvStartFirstTask( void );
 \r
 extern void *pxCurrentTCB;\r
 \r
-unsigned char ucIPLToRestore = 0;\r
-\r
 /*-----------------------------------------------------------*/\r
 \r
 /* \r
@@ -200,29 +198,6 @@ void vTickISR( void )
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void vPortSetInterruptMask( void )\r
-{\r
-unsigned char ucPreviousIPL;\r
-\r
-       /* Store the current IPL to ensure it is restored correctly later if it is\r
-       not currently 0.  This is a stack variable, so there should not be a race\r
-       condition even if there is an interrupt or context switch before the new\r
-       IPL value gets set. */\r
-       ucPreviousIPL = get_ipl();\r
-       \r
-       /* Set the mask up to the max syscall priority. */\r
-       set_ipl( configMAX_SYSCALL_INTERRUPT_PRIORITY );\r
-       \r
-       /* Now the mask is set there will not be a context switch, so the previous\r
-       and current IPL values can be compared.  This ensures against the IPL being\r
-       set back to zero too early when critical sections nest. */\r
-       if( ucPreviousIPL < configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
-       {\r
-               ucIPLToRestore = ucPreviousIPL;\r
-       }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
 #pragma inline_asm prvStartFirstTask\r
 static void prvStartFirstTask( void )\r
 {\r
index 3cc3b6d26a38884d1a14dd432d8176a958326ab2..612219ac25b69f60501e6bd1ee7c78e89c2362d4 100644 (file)
@@ -109,9 +109,11 @@ extern void vTaskSwitchContext( void );
  * These macros should be called directly, but through the taskENTER_CRITICAL()\r
  * and taskEXIT_CRITICAL() macros.\r
  */\r
-extern unsigned char ucIPLToRestore;\r
-#define portENABLE_INTERRUPTS()        set_ipl( ucIPLToRestore )\r
-#define portDISABLE_INTERRUPTS()       vPortSetInterruptMask()\r
+#define portENABLE_INTERRUPTS()        set_ipl( 0 )\r
+#define portDISABLE_INTERRUPTS()       set_ipl( configKERNEL_INTERRUPT_PRIORITY )\r
+\r
+#define portSET_INTERRUPT_MASK_FROM_ISR() get_ipl(); set_ipl( configMAX_SYSCALL_INTERRUPT_PRIORITY )\r
+#define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ) set_ipl( uxSavedInterruptStatus )\r
 \r
 /* Critical nesting counts are stored in the TCB. */\r
 #define portCRITICAL_NESTING_IN_TCB ( 1 )\r