.. _mpu_userspace:

MPU Backed Userspace
####################

The MPU backed userspace implementation requires the creation of a secondary
set of stacks.  These stacks exist in a 1:1 relationship with each thread stack
defined in the system.  The privileged stacks are created as a part of the
build process.

A post-build script :ref:`gen_kobject_list.py` scans the generated
ELF file and finds all of the thread stack objects.  A set of privileged
stacks, a lookup table, and a set of helper functions are created and added
to the image.

During the process of dropping a thread to user mode, the privileged stack
information is filled in and later used by the swap and system call
infrastructure to configure the MPU regions properly for the thread stack and
guard (if applicable).

During system calls, the user mode thread's access to the system call and the
passed-in parameters are all validated.  The user mode thread is then elevated
to privileged mode, the stack is switched to use the privileged stack, and the
call is made to the specified kernel API.  On return from the kernel API,  the
thread is set back to user mode and the stack is restored to the user stack.
