zephyr/include/arch
Andrew Boie 8014e075f4 x86: use per-thread page tables
Previously, context switching on x86 with memory protection
enabled involved walking the page tables, de-configuring all
the partitions in the outgoing thread's memory domain, and
then configuring all the partitions in the incoming thread's
domain, on a global set of page tables.

We now have a much faster design. Each thread has reserved in
its stack object a number of pages to store page directories
and page tables pertaining to the system RAM area. Each
thread also has a toplevel PDPT which is configured to use
the per-thread tables for system RAM, and the global tables
for the rest of the address space.

The result of this is on context switch, at most we just have
to update the CR3 register to the incoming thread's PDPT.

The x86_mmu_api test was making too many assumptions and has
been adjusted to work with the new design.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2019-08-05 13:25:50 +02:00
..
arc arc: Add support for unaligned access 2019-07-31 09:25:15 -07:00
arm arch: arm: Move Cortex-M specific CPU defines 2019-08-02 23:37:03 +03:00
common cleanup: include/: move sys_io.h to sys/sys_io.h 2019-06-27 22:55:49 -04:00
nios2 kernel: rename NANO_ESF 2019-07-25 15:06:58 -07:00
posix kernel: rename NANO_ESF 2019-07-25 15:06:58 -07:00
riscv riscv: make core code 64-bit compatible 2019-08-02 13:54:48 -07:00
x86 x86: use per-thread page tables 2019-08-05 13:25:50 +02:00
x86_64 kernel: rename NANO_ESF 2019-07-25 15:06:58 -07:00
xtensa kernel: rename NANO_ESF 2019-07-25 15:06:58 -07:00
cpu.h riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
syscall.h arch/x86: move arch/x86/syscall.h to arch/x86/ia32/syscall.h 2019-07-02 19:30:00 -04:00