[PATCH v1 1/2] score: Enforce stack_end alignment
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Mar 2 15:00:24 UTC 2021
Hello Kinsey,
I think the root cause is that this is not necessarily stack aligned:
On 01/03/2021 23:59, Kinsey Moore wrote:
> thread_config->stack_area = _Stack_Allocate( size );
Also this (easy to fix):
/**
* @ingroup RTEMSAPIClassicTasks
*
* @brief This constant defines the recommended alignment of a task storage
* area in bytes.
*
* @par Notes
* Use it with RTEMS_ALIGNED() to define the alignment of a statically
* allocated task storage area.
*/
#define RTEMS_TASK_STORAGE_ALIGNMENT CPU_HEAP_ALIGNMENT
We have currently only heap alignment. I think we have to account for a
potential stack alignment in the allocation size and the task storage
components:
/**
* @brief Size of floating point context area.
*
* This constant defines the number of bytes required
* to store a full floating point context.
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#define CONTEXT_FP_SIZE \
( ( CPU_CONTEXT_FP_SIZE + CPU_HEAP_ALIGNMENT - 1 ) \
& ~( CPU_HEAP_ALIGNMENT - 1 ) )
#else
#define CONTEXT_FP_SIZE 0
#endif
uintptr_t _TLS_Get_allocation_size( void )
{
uintptr_t size;
uintptr_t allocation_size;
uintptr_t alignment;
size = _TLS_Get_size();
if ( size == 0 ) {
return 0;
}
allocation_size = _TLS_Allocation_size;
if ( allocation_size == 0 ) {
allocation_size = _TLS_Heap_align_up( size );
alignment = _TLS_Heap_align_up( (uintptr_t) _TLS_Alignment );
/*
* The stack allocator does not support aligned allocations. Allocate
* enough to do the alignment manually.
*/
if ( alignment > CPU_HEAP_ALIGNMENT ) {
allocation_size += alignment;
}
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
More information about the devel
mailing list