From 271e4b2ba2c1031bf6630d2b3b8fd48c960a8fd6 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Fri, 18 Sep 2009 13:55:43 +0000 Subject: [PATCH] Update to use Yagarto compiler and use the noinline attribute on the serial port handler function. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@851 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- Demo/ARM7_AT91FR40008_GCC/atmel-ram.ld | 6 ++++++ Demo/ARM7_AT91FR40008_GCC/atmel-rom.ld | 6 ++++++ Demo/ARM7_AT91FR40008_GCC/serial/serialISR.c | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Demo/ARM7_AT91FR40008_GCC/atmel-ram.ld b/Demo/ARM7_AT91FR40008_GCC/atmel-ram.ld index 692202661..763519c49 100644 --- a/Demo/ARM7_AT91FR40008_GCC/atmel-ram.ld +++ b/Demo/ARM7_AT91FR40008_GCC/atmel-ram.ld @@ -35,6 +35,12 @@ SECTIONS *(.bss) } >ram + . = ALIGN(4); + .eh_frame : + { + KEEP (*(.eh_frame)) + } > ram + /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. */ diff --git a/Demo/ARM7_AT91FR40008_GCC/atmel-rom.ld b/Demo/ARM7_AT91FR40008_GCC/atmel-rom.ld index 35578fd96..95727eee2 100644 --- a/Demo/ARM7_AT91FR40008_GCC/atmel-rom.ld +++ b/Demo/ARM7_AT91FR40008_GCC/atmel-rom.ld @@ -36,6 +36,12 @@ SECTIONS *(.bss) } >ram + . = ALIGN(4); + .eh_frame : + { + KEEP (*(.eh_frame)) + } > ram + /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. */ diff --git a/Demo/ARM7_AT91FR40008_GCC/serial/serialISR.c b/Demo/ARM7_AT91FR40008_GCC/serial/serialISR.c index 959ede8f5..ea4155029 100644 --- a/Demo/ARM7_AT91FR40008_GCC/serial/serialISR.c +++ b/Demo/ARM7_AT91FR40008_GCC/serial/serialISR.c @@ -93,7 +93,7 @@ void vUART_ISR_Wrapper( void ) __attribute__ ((naked)); /* The ISR function that actually performs the work. This must be separate from the wrapper to ensure the correct stack frame is set up. */ -void vUART_ISR_Handler( void ); +void vUART_ISR_Handler( void ) __attribute__ ((noinline)); /*-----------------------------------------------------------*/ void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, xQueueHandle *pxCharsForTx ) @@ -116,7 +116,7 @@ void vUART_ISR_Wrapper( void ) /* Call the handler. This must be a separate function to ensure the stack frame is correctly set up. */ - vUART_ISR_Handler(); + __asm volatile( "bl vUART_ISR_Handler" ); /* Restore the context of whichever task will run next. */ portRESTORE_CONTEXT(); -- 2.39.5