+ The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame pointer. Variables declared within ISRs must now be declared static.

This commit is contained in:
Richard Barry 2007-10-26 09:52:15 +00:00
parent 98a9959a44
commit a3921adfe1
5 changed files with 15 additions and 25 deletions

View File

@ -435,7 +435,7 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA
* \defgroup xQueueSend xQueueSend * \defgroup xQueueSend xQueueSend
* \ingroup QueueManagement * \ingroup QueueManagement
*/ */
signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portTickType xCopyPosition ); signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition );
/** /**
* queue. h * queue. h

View File

@ -47,6 +47,11 @@
+ The assembler statements are now included in a single asm block rather + The assembler statements are now included in a single asm block rather
than each line having its own asm block. than each line having its own asm block.
Changes from V4.5.0
+ The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame
pointer. Variables declared within ISRs must now be declared static.
*/ */
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
@ -197,12 +202,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \
#define portENTER_SWITCHING_ISR() \ #define portENTER_SWITCHING_ISR() \
/* Save the context of the interrupted task. */ \ /* Save the context of the interrupted task. */ \
portSAVE_CONTEXT(); \ portSAVE_CONTEXT(); \
\
/* We don't know the stack requirements for the ISR, so the frame */\
/* pointer will be set to the top of the task stack, and the stack*/\
/* pointer left where it is. The IRQ stack will get used for any */\
/* functions calls made by this ISR. */ \
asm volatile ( "SUB R11, LR, #4" ); \
{ {
#define portEXIT_SWITCHING_ISR( SwitchRequired ) \ #define portEXIT_SWITCHING_ISR( SwitchRequired ) \

View File

@ -47,6 +47,9 @@
+ The assembler statements are now included in a single asm block rather + The assembler statements are now included in a single asm block rather
than each line having its own asm block. than each line having its own asm block.
+ The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame
pointer. Variables declared within ISRs must now be declared static.
*/ */
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
@ -190,12 +193,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \
#define portENTER_SWITCHING_ISR() \ #define portENTER_SWITCHING_ISR() \
/* Save the context of the interrupted task. */ \ /* Save the context of the interrupted task. */ \
portSAVE_CONTEXT(); \ portSAVE_CONTEXT(); \
\
/* We don't know the stack requirements for the ISR, so the frame */\
/* pointer will be set to the top of the task stack, and the stack*/\
/* pointer left where it is. The IRQ stack will get used for any */\
/* functions calls made by this ISR. */ \
asm volatile ( "SUB R11, LR, #4" ); \
{ {
#define portEXIT_SWITCHING_ISR( SwitchRequired ) \ #define portEXIT_SWITCHING_ISR( SwitchRequired ) \

View File

@ -47,6 +47,9 @@
+ The assembler statements are now included in a single asm block rather + The assembler statements are now included in a single asm block rather
than each line having its own asm block. than each line having its own asm block.
+ The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame
pointer. Variables declared within ISRs must now be declared static.
*/ */
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
@ -190,12 +193,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \
#define portENTER_SWITCHING_ISR() \ #define portENTER_SWITCHING_ISR() \
/* Save the context of the interrupted task. */ \ /* Save the context of the interrupted task. */ \
portSAVE_CONTEXT(); \ portSAVE_CONTEXT(); \
\
/* We don't know the stack requirements for the ISR, so the frame */\
/* pointer will be set to the top of the task stack, and the stack*/\
/* pointer left where it is. The IRQ stack will get used for any */\
/* functions calls made by this ISR. */ \
asm volatile ( "SUB R11, LR, #4" ); \
{ {
#define portEXIT_SWITCHING_ISR( SwitchRequired ) \ #define portEXIT_SWITCHING_ISR( SwitchRequired ) \

View File

@ -44,6 +44,9 @@
+ The assembler statements are now included in a single asm block rather + The assembler statements are now included in a single asm block rather
than each line having its own asm block. than each line having its own asm block.
+ The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame
pointer. Variables declared within ISRs must now be declared static.
*/ */
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
@ -187,12 +190,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \
#define portENTER_SWITCHING_ISR() \ #define portENTER_SWITCHING_ISR() \
/* Save the context of the interrupted task. */ \ /* Save the context of the interrupted task. */ \
portSAVE_CONTEXT(); \ portSAVE_CONTEXT(); \
\
/* We don't know the stack requirements for the ISR, so the frame */\
/* pointer will be set to the top of the task stack, and the stack*/\
/* pointer left where it is. The IRQ stack will get used for any */\
/* functions calls made by this ISR. */ \
asm volatile ( "SUB R11, LR, #4" ); \
{ {
#define portEXIT_SWITCHING_ISR( SwitchRequired ) \ #define portEXIT_SWITCHING_ISR( SwitchRequired ) \