From afd35a7ba6099aa6f3a401af90980ba4a9760e97 Mon Sep 17 00:00:00 2001 From: RichardBarry Date: Fri, 26 Oct 2007 09:52:15 +0000 Subject: + The macro portENTER_SWITCHING_ISR() no longer attempts to use the frame pointer. Variables declared within ISRs must now be declared static. git-svn-id: http://svn.code.sf.net/p/freertos/code/trunk@111 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- Source/include/queue.h | 2 +- Source/portable/GCC/ARM7_AT91FR40008/portmacro.h | 11 +++++------ Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h | 9 +++------ Source/portable/GCC/ARM7_LPC2000/portmacro.h | 9 +++------ Source/portable/GCC/ARM7_LPC23xx/portmacro.h | 9 +++------ 5 files changed, 15 insertions(+), 25 deletions(-) diff --git a/Source/include/queue.h b/Source/include/queue.h index 6f6fdb7b4..bd21cbea0 100644 --- a/Source/include/queue.h +++ b/Source/include/queue.h @@ -435,7 +435,7 @@ xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBA * \defgroup xQueueSend xQueueSend * \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 diff --git a/Source/portable/GCC/ARM7_AT91FR40008/portmacro.h b/Source/portable/GCC/ARM7_AT91FR40008/portmacro.h index 03870c443..2458050a3 100644 --- a/Source/portable/GCC/ARM7_AT91FR40008/portmacro.h +++ b/Source/portable/GCC/ARM7_AT91FR40008/portmacro.h @@ -47,6 +47,11 @@ + The assembler statements are now included in a single asm block rather 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 @@ -197,12 +202,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \ #define portENTER_SWITCHING_ISR() \ /* Save the context of the interrupted task. */ \ 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 ) \ diff --git a/Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h b/Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h index 53fc77d0c..9ec48a238 100644 --- a/Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h +++ b/Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h @@ -47,6 +47,9 @@ + The assembler statements are now included in a single asm block rather 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 @@ -190,12 +193,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \ #define portENTER_SWITCHING_ISR() \ /* Save the context of the interrupted task. */ \ 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 ) \ diff --git a/Source/portable/GCC/ARM7_LPC2000/portmacro.h b/Source/portable/GCC/ARM7_LPC2000/portmacro.h index 53fc77d0c..9ec48a238 100644 --- a/Source/portable/GCC/ARM7_LPC2000/portmacro.h +++ b/Source/portable/GCC/ARM7_LPC2000/portmacro.h @@ -47,6 +47,9 @@ + The assembler statements are now included in a single asm block rather 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 @@ -190,12 +193,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \ #define portENTER_SWITCHING_ISR() \ /* Save the context of the interrupted task. */ \ 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 ) \ diff --git a/Source/portable/GCC/ARM7_LPC23xx/portmacro.h b/Source/portable/GCC/ARM7_LPC23xx/portmacro.h index c068fcb77..d6d3f4de5 100644 --- a/Source/portable/GCC/ARM7_LPC23xx/portmacro.h +++ b/Source/portable/GCC/ARM7_LPC23xx/portmacro.h @@ -44,6 +44,9 @@ + The assembler statements are now included in a single asm block rather 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 @@ -187,12 +190,6 @@ extern volatile unsigned portLONG ulCriticalNesting; \ #define portENTER_SWITCHING_ISR() \ /* Save the context of the interrupted task. */ \ 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 ) \ -- cgit v1.2.1