config: Fix _ISR_Stack_area_end

In the previous implementation, the _ISR_Stack_area_begin and
_ISR_Stack_area_end symbols were in different sections. If they do not
have the same alignment, then the following linker directive could
separate them:

  *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.rtemsstack*)))

Do not use different sections and instead define _ISR_Stack_area_end
directly.

Update #3799.
This commit is contained in:
Sebastian Huber
2020-04-08 19:22:34 +02:00
parent 3a882e5bc3
commit 099ab00d16
+9 -6
View File
@@ -93,14 +93,17 @@ RTEMS_DEFINE_GLOBAL_SYMBOL(
CONFIGURE_INTERRUPT_STACK_SIZE
);
char _ISR_Stack_area_begin[
_CONFIGURE_MAXIMUM_PROCESSORS * CONFIGURE_INTERRUPT_STACK_SIZE
] RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT )
RTEMS_SECTION( ".rtemsstack.interrupt.begin" );
#define _CONFIGURE_INTERRUPT_STACK_AREA_SIZE \
( CONFIGURE_INTERRUPT_STACK_SIZE * _CONFIGURE_MAXIMUM_PROCESSORS )
RTEMS_DEFINE_GLOBAL_SYMBOL_IN_SECTION(
char _ISR_Stack_area_begin[ _CONFIGURE_INTERRUPT_STACK_AREA_SIZE ]
RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT )
RTEMS_SECTION( ".rtemsstack.interrupt" );
RTEMS_DEFINE_GLOBAL_SYMBOL(
_ISR_Stack_area_end,
".rtemsstack.interrupt.end"
RTEMS_SYMBOL_NAME( _ISR_Stack_area_begin )
+ _CONFIGURE_INTERRUPT_STACK_AREA_SIZE
);
/* Thread stack size configuration */