]> git.sur5r.net Git - freertos/commitdiff
Updated GCC/ARM7 ISR functions so they only use static variables.
authorRichardBarry <RichardBarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 26 Oct 2007 10:14:19 +0000 (10:14 +0000)
committerRichardBarry <RichardBarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 26 Oct 2007 10:14:19 +0000 (10:14 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@112 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/ARM7_AT91FR40008_GCC/serial/serialISR.c
Demo/ARM7_LPC2106_GCC/serial/serialISR.c
Demo/ARM7_LPC2368_Eclipse/RTOSDemo/webserver/EMAC_ISR.c
Demo/ARM7_LPC2368_Rowley/webserver/EMAC_ISR.c
Demo/WizNET_DEMO_GCC_ARM7/TCPISR.c
Demo/WizNET_DEMO_GCC_ARM7/i2cISR.c
Demo/lwIP_Demo_Rowley_ARM7/EMAC/SAM7_EMAC_ISR.c
Demo/lwIP_Demo_Rowley_ARM7/USB/USBIsr.c

index 4fdcab46c6a13829aeebfcc2912e31e48d3f1403..a8b3ad57737f0c33ceaa047b61d08b75c4882e23 100644 (file)
@@ -97,10 +97,14 @@ void vUART_ISR( void )
        variable declarations. */\r
        portENTER_SWITCHING_ISR();\r
 \r
-       /* Now we can declare the local variables. */\r
-       signed portCHAR cChar;\r
-       portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByRx = pdFALSE;\r
-       unsigned portLONG ulStatus;\r
+       /* Now we can declare the local variables.   These must be static. */\r
+       static signed portCHAR cChar;\r
+       static portBASE_TYPE xTaskWokenByTx, xTaskWokenByRx;\r
+       static unsigned portLONG ulStatus;\r
+\r
+       /* These variables are static so need initialising manually here. */\r
+       xTaskWokenByTx = pdFALSE;\r
+       xTaskWokenByRx = pdFALSE;\r
 \r
        /* What caused the interrupt? */\r
        ulStatus = AT91C_BASE_US0->US_CSR & AT91C_BASE_US0->US_IMR;\r
@@ -133,7 +137,7 @@ void vUART_ISR( void )
                }\r
        }\r
 \r
-       // Acknowledge the interrupt at AIC level...\r
+       /* Acknowledge the interrupt at AIC level... */\r
        AT91C_BASE_AIC->AIC_EOICR = serCLEAR_AIC_INTERRUPT;\r
 \r
        /* Exit the ISR.  If a task was woken by either a character being received\r
index 57a18e5c150275254b0d63864ba21c6eb1c3747d..34d542f7cc594a3c004702c7121ed143aa8399fd 100644 (file)
@@ -110,9 +110,13 @@ void vUART_ISR( void )
        variable declarations. */\r
        portENTER_SWITCHING_ISR();\r
 \r
-       /* Now we can declare the local variables. */\r
-       signed portCHAR cChar;\r
-       portBASE_TYPE xTaskWokenByTx = pdFALSE, xTaskWokenByRx = pdFALSE;\r
+       /* Now we can declare the local variables.   These must be static. */\r
+       static signed portCHAR cChar;\r
+       static portBASE_TYPE xTaskWokenByTx, xTaskWokenByRx;\r
+\r
+       /* As these variables are static they must be initialised manually here. */\r
+       xTaskWokenByTx = pdFALSE;\r
+       xTaskWokenByRx = pdFALSE;\r
 \r
        /* What caused the interrupt? */\r
        switch( UART0_IIR & serINTERRUPT_SOURCE_MASK )\r
index ba43f934ea839bd402c3200d9515d940a88d9742..495fea5006233b5a9d37a3efe431ad1ad412e401 100644 (file)
@@ -10,7 +10,9 @@ void vEMAC_ISR( void )
 {\r
     portENTER_SWITCHING_ISR();\r
 \r
-    portBASE_TYPE xSwitchRequired = pdFALSE;\r
+    static portBASE_TYPE xSwitchRequired;\r
+\r
+       xSwitchRequired = pdFALSE;\r
 \r
     /* Clear the interrupt. */\r
     MAC_INTCLEAR = 0xffff;\r
index 32c7c1ddf57bed20a0d2660122579b008e6837b6..9df1ffe269a96a19a704e9bc005bbf18b16a5590 100644 (file)
@@ -10,7 +10,12 @@ void vEMAC_ISR( void )
 {\r
     portENTER_SWITCHING_ISR();\r
 \r
-    portBASE_TYPE xSwitchRequired = pdFALSE;\r
+\r
+       /* Variable must be static. */\r
+    static portBASE_TYPE xSwitchRequired;\r
+\r
+       /* As the variable is static it must be manually initialised here. */\r
+       xSwitchRequired = pdFALSE;\r
 \r
     /* Clear the interrupt. */\r
     IntClear = 0xffff;\r
index 4779a8add9b42aacb8e90994b64da0d6c39207aa..5b1d3bff633cefb27cff98efb93bf9241b1957a6 100644 (file)
@@ -59,7 +59,12 @@ void vEINT0_ISR( void )
        portENTER_SWITCHING_ISR();\r
 \r
        extern xQueueHandle xTCPISRQueue;\r
-       portBASE_TYPE xTaskWoken = pdFALSE;\r
+\r
+       /* Must be declared static. */\r
+       static portBASE_TYPE xTaskWoken;\r
+\r
+       /* As the variable is static it must be manually initialised. */\r
+       xTaskWoken = pdFALSE;\r
 \r
        /* Just wake the TCP task so it knows an ISR has occurred. */\r
        xQueueSendFromISR( xTCPISRQueue, ( void * ) &lDummyVariable, xTaskWoken );      \r
index e0a97497a71a675bdd7d99fe6bfe84146ebb1588..cfb4e9aadcc863e18d44f631bc481d1d10b772b8 100644 (file)
@@ -124,11 +124,16 @@ void vI2C_ISR( void )
 {\r
        portENTER_SWITCHING_ISR();\r
 \r
+       /* Variables must be static. */\r
+\r
        /* Holds the current transmission state. */                                                     \r
        static I2C_STATE eCurrentState = eSentStart;\r
        static portLONG lMessageIndex = -i2cBUFFER_ADDRESS_BYTES; /* There are two address bytes to send prior to the data. */\r
-       portBASE_TYPE xTaskWokenByTx = pdFALSE;\r
-       portLONG lBytesLeft;\r
+       static portBASE_TYPE xTaskWokenByTx;\r
+       static portLONG lBytesLeft;\r
+\r
+       xTaskWokenByTx = pdFALSE;\r
+\r
 \r
        /* The action taken for this interrupt depends on our current state. */\r
        switch( eCurrentState )\r
index 140f72df0197356e260c91baa7e0d69b64a90af6..32d982fe31cfa6e9abf68f20f80a0dfed3873b53 100644 (file)
@@ -71,11 +71,14 @@ void vEMACISR( void )
        variable declarations. */\r
        portENTER_SWITCHING_ISR();\r
 \r
-       /* Variable definitions can be made now. */\r
-       volatile unsigned portLONG ulIntStatus, ulEventStatus;\r
-       portBASE_TYPE xSwitchRequired = pdFALSE;\r
+       /* Variable definitions can be made now.   These must be static. */\r
+       static volatile unsigned portLONG ulIntStatus, ulEventStatus;\r
+       static portBASE_TYPE xSwitchRequired;\r
     extern void vClearEMACTxBuffer( void );\r
 \r
+       /* As the variable is static it must be initialised manually here. */\r
+       xSwitchRequired = pdFALSE;\r
+\r
        /* Find the cause of the interrupt. */\r
        ulIntStatus = AT91C_BASE_EMAC->EMAC_ISR;\r
        ulEventStatus = AT91C_BASE_EMAC->EMAC_RSR;\r
index 5c731ef5471a526e17b0cc57f87c5fecd1ac46db..db1f9cf91c5f9f2028dc8327751976d9150b3a35 100644 (file)
@@ -71,12 +71,15 @@ void vUSB_ISR( void )
        stack variable declarations. */\r
        portENTER_SWITCHING_ISR();\r
 \r
-       /* Now variables can be declared. */\r
-       portCHAR cTaskWokenByPost = pdFALSE\r
+       /* Now variables can be declared.  These must be static. */\r
+       static portCHAR cTaskWokenByPost\r
        static volatile unsigned portLONG ulNextMessage = 0;\r
-       xISRStatus *pxMessage;\r
-       unsigned portLONG ulRxBytes;\r
-       unsigned portCHAR ucFifoIndex;\r
+       static xISRStatus *pxMessage;\r
+       static unsigned portLONG ulRxBytes;\r
+       static unsigned portCHAR ucFifoIndex;\r
+\r
+       /* As the variables are static they must be initialised manually here. */\r
+       cTaskWokenByPost = pdFALSE; \r
 \r
     /* Use the next message from the array. */\r
        pxMessage = &( xISRMessages[ ( ulNextMessage & usbQUEUE_LENGTH ) ] );\r