Update to use the latest Yagarto and change the C handler part of the interrupt routines to use the noinline attribute.

This commit is contained in:
Richard Barry 2009-09-18 14:08:36 +00:00
parent 6bdf14c33f
commit 7ff79ca26b
3 changed files with 14 additions and 2 deletions

View file

@ -36,6 +36,12 @@ SECTIONS
*(.bss) *(.bss)
} >ram } >ram
. = ALIGN(4);
.eh_frame :
{
KEEP (*(.eh_frame))
} > ram
/* Align here to ensure that the .bss section occupies space up to /* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the _end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections. */ .bss section disappears because there are no input sections. */

View file

@ -36,6 +36,12 @@ SECTIONS
*(.bss) *(.bss)
} >ram } >ram
. = ALIGN(4);
.eh_frame :
{
KEEP (*(.eh_frame))
} > ram
/* Align here to ensure that the .bss section occupies space up to /* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the _end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections. */ .bss section disappears because there are no input sections. */

View file

@ -96,7 +96,7 @@ void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle
void vUART_ISR_Wrapper( void ) __attribute__ ((naked)); void vUART_ISR_Wrapper( void ) __attribute__ ((naked));
/* UART0 interrupt service routine handler. */ /* UART0 interrupt service routine handler. */
void vUART_ISR_Handler( void ); void vUART_ISR_Handler( void ) __attribute__ ((noinline));
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars, void vSerialISRCreateQueues( unsigned portBASE_TYPE uxQueueLength, xQueueHandle *pxRxedChars,
@ -124,7 +124,7 @@ void vUART_ISR_Wrapper( void )
/* Call the handler. This must be a separate function from the wrapper /* Call the handler. This must be a separate function from the wrapper
to ensure the correct stack frame is set up. */ to ensure the correct stack frame is set up. */
vUART_ISR_Handler(); __asm volatile ("bl vUART_ISR_Handler");
/* Restore the context of whichever task is going to run next. */ /* Restore the context of whichever task is going to run next. */
portRESTORE_CONTEXT(); portRESTORE_CONTEXT();