Looks good other than a minor tweak. Kinsey
-----Original Message----- From: devel <devel-boun...@rtems.org> On Behalf Of Sebastian Huber Sent: Thursday, March 4, 2021 03:17 To: devel@rtems.org Subject: [PATCH v2] score: Ensure stack alignment requirement > Make sure that a user-provided stack size is the minimum size allocated > for the stack. > > Make sure we meet the stack alignment requirement also for CPU ports > with CPU_STACK_ALIGNMENT > CPU_HEAP_ALIGNMENT. > --- > diff --git a/cpukit/include/rtems/score/stackimpl.h > b/cpukit/include/rtems/score/stackimpl.h > index 43b7c8151e..c15206002c 100644 > --- a/cpukit/include/rtems/score/stackimpl.h > +++ b/cpukit/include/rtems/score/stackimpl.h > @@ -135,6 +135,7 @@ RTEMS_INLINE_ROUTINE size_t _Stack_Extend_size( > ) > { > size_t extra_size; > + size_t alignment_overhead; > > extra_size = _TLS_Get_allocation_size(); > > @@ -147,15 +148,32 @@ RTEMS_INLINE_ROUTINE size_t _Stack_Extend_size( > (void) is_fp; > #endif > > - stack_size += extra_size; > + /* > + * In order to make sure that a user-provided stack size is the minimum > which > + * can be allocated for the stack, we have to align it up to the next stack > + * boundary. > + */ > + alignment_overhead = CPU_STACK_ALIGNMENT - 1; This should be CPU_HEAP_ALIGNMENT given the #if below. > + > +#if CPU_STACK_ALIGNMENT > CPU_HEAP_ALIGNMENT > + /* > + * If the heap allocator does not meet the stack alignment requirement, > then > + * we have to do the stack alignment manually in _Thread_Initialize() and > + * need to allocate extra space for this. > + */ > + alignment_overhead += CPU_STACK_ALIGNMENT - CPU_HEAP_ALIGNMENT; > +#endif _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel