arch: arm: fix implementation of _new_thread()

This commit does the following:
- moves the reservation of the area for local thread data
  inside the arch-specific _new_thread() function,
- aligns the end of the thread's stack with the granularity
  of the MPU, already at thread's initialization, moving it
  out of userspace_enter() function. In this way, the local
  thread data are stored inside the thread stack area that
  is, later, assigned unprivileged RW permissions (if thread
  enters user mode).
- passes the right thread stack size information to function
  _new_thread_init(), which stores it into stack_info.start.

As a result, the whole usable User Thread stack area (i.e.
excluding a possible guard area) falls inside the region
programmed as unprivileged RW, during context-switch.

Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
1 file changed