mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-25 05:47:12 +00:00
rtems: rtems_configuration_get_interrupt_stack_size()
Fix rtems_configuration_get_interrupt_stack_size() for some code models. The _ISR_Stack_size symbol has an arbitrary absolute address and may not be representable in the code model used by the compiler. Update #4953.
This commit is contained in:
@@ -438,7 +438,7 @@ const char *rtems_get_version_string( void );
|
||||
* @endparblock
|
||||
*/
|
||||
#define rtems_configuration_get_interrupt_stack_size() \
|
||||
((size_t) _ISR_Stack_size)
|
||||
((size_t) _ISR_Stack_size_object)
|
||||
|
||||
/* Generated from spec:/rtems/config/if/get-maximum-extensions */
|
||||
|
||||
|
||||
@@ -98,13 +98,25 @@ extern ISR_Handler_entry _ISR_Vector_table[ CPU_INTERRUPT_NUMBER_OF_VECTORS ];
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Global symbol with a value equal to the configure interrupt stack size.
|
||||
* @brief Provides the configured interrupt stack size through an address.
|
||||
*
|
||||
* The address of this global symbol is equal to the configured interrupt stack
|
||||
* size. The address of this symbol has an arbitrary value an may not be
|
||||
* representable in the code model used by the compiler.
|
||||
*
|
||||
* This global symbol is defined by the application configuration option
|
||||
* CONFIGURE_INIT_TASK_STACK_SIZE via <rtems/confdefs.h>.
|
||||
*/
|
||||
RTEMS_DECLARE_GLOBAL_SYMBOL( _ISR_Stack_size );
|
||||
|
||||
/**
|
||||
* @brief Provides the configured interrupt stack size through an object.
|
||||
*
|
||||
* This object is provided to avoid issues with the _ISR_Stack_size symbol
|
||||
* address and the code model used by the compiler.
|
||||
*/
|
||||
extern const char * const volatile _ISR_Stack_size_object;
|
||||
|
||||
/**
|
||||
* @brief The interrupt stack area begin.
|
||||
*
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
#include <rtems/score/percpu.h>
|
||||
#include <rtems/config.h>
|
||||
|
||||
const char * const volatile _ISR_Stack_size_object = _ISR_Stack_size;
|
||||
|
||||
void _ISR_Handler_initialization( void )
|
||||
{
|
||||
uint32_t cpu_max;
|
||||
|
||||
Reference in New Issue
Block a user