mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Fix pxTopOfStack calculation in configINIT_TLS_BLOCK for picolib (#739)
The pxTopOfStack calculation in configINIT_TLS_BLOCK for picolib needs to decrement pxTopOfStack in order to meet the expectation of pxPortInitialiseStack function.
This commit is contained in:
parent
05d93e0990
commit
b5f670f826
|
@ -58,18 +58,19 @@
|
|||
#endif
|
||||
|
||||
/* Allocate thread local storage block off the end of the
|
||||
* stack. The _tls_size() function returns the size (in
|
||||
* bytes) of the total TLS area used by the application */
|
||||
* stack. The picolibcTLS_SIZE macro returns the size (in
|
||||
* bytes) of the total TLS area used by the application.
|
||||
* Calculate the top of stack address. */
|
||||
#if ( portSTACK_GROWTH < 0 )
|
||||
|
||||
#define configINIT_TLS_BLOCK( xTLSBlock, pxTopOfStack ) \
|
||||
do { \
|
||||
pxTopOfStack = ( StackType_t * ) ( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) \
|
||||
- picolibcTLS_SIZE ) & ~ \
|
||||
configMAX( picolibcSTACK_ALIGNMENT_MASK, \
|
||||
picolibcTLS_ALIGNMENT_MASK ) ); \
|
||||
xTLSBlock = pxTopOfStack; \
|
||||
_init_tls( xTLSBlock ); \
|
||||
#define configINIT_TLS_BLOCK( xTLSBlock, pxTopOfStack ) \
|
||||
do { \
|
||||
xTLSBlock = ( void * ) ( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) - \
|
||||
picolibcTLS_SIZE ) & \
|
||||
~picolibcTLS_ALIGNMENT_MASK ); \
|
||||
pxTopOfStack = ( StackType_t * ) ( ( ( ( portPOINTER_SIZE_TYPE ) xTLSBlock ) - 1 ) & \
|
||||
~picolibcSTACK_ALIGNMENT_MASK ); \
|
||||
_init_tls( xTLSBlock ); \
|
||||
} while( 0 )
|
||||
#else /* portSTACK_GROWTH */
|
||||
#define configINIT_TLS_BLOCK( xTLSBlock, pxTopOfStack ) \
|
||||
|
|
Loading…
Reference in a new issue