zephyr/tests/kernel
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
..
boot_page_table arch/x86: move arch/x86/include/mmustructs.h to ia32/mmustructs.h 2019-07-03 20:01:17 -04:00
common tests/kernel/common: Fix uptime delta test for fast ticks 2019-07-02 22:52:29 -04:00
context riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
critical tests: kernel: critical: alternative test-case for SAM SoCs with WDT 2019-07-11 11:26:01 -05:00
device tests: enable native_posix_64 testing 2019-07-16 10:41:11 -07:00
early_sleep tests/kernel/early_sleep: Fix for fast ticks 2019-07-02 22:52:29 -04:00
fatal riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
fifo cleanup: include/: move misc/util.h to sys/util.h 2019-06-27 22:55:49 -04:00
fp_sharing arch: arc: optimize the float support 2019-08-01 18:09:35 -07:00
gen_isr_table riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
interrupt riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
lifo cleanup: include/: move misc/slist.h to sys/slist.h 2019-06-27 22:55:49 -04:00
mbox pointer-type args: cast appropriately to be 64-bit compatible 2019-06-12 08:20:52 -07:00
mem_heap/mheap_api_concept malloc: make sure returned memory is properly aligned 2019-07-03 14:17:29 -07:00
mem_pool riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
mem_protect x86: use per-thread page tables 2019-08-05 13:25:50 +02:00
mem_slab cleanup: include/: move atomic.h to sys/atomic.h 2019-06-27 22:55:49 -04:00
mp license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
msgq/msgq_api test/msgq: adjust overflow test for 64-bit targets 2019-07-04 07:22:43 -04:00
mutex print format: adjust specifiers to be compatible with a 64-bit build 2019-07-11 20:12:26 -07:00
obj_tracing k_stack: make it 64-bit compatible 2019-06-14 05:46:29 -04:00
pending lifo/fifo: first word is not always first 4 bytes 2019-06-26 09:08:42 -04:00
pipe kernel: rename NANO_ESF 2019-07-25 15:06:58 -07:00
poll tests: poll: expand userspace coverage 2019-06-18 09:08:01 -04:00
profiling/profiling_api cleanup: include/: move misc/stack.h to debug/stack.h 2019-06-27 22:55:49 -04:00
queue mempool: make sure max block size isn't smaller than minimum allowed 2019-07-02 19:41:20 -07:00
sched tests: schedule_api: minor cleanup 2019-07-04 10:04:27 -04:00
semaphore docs: fix misspelling across the tree 2019-06-19 15:34:13 -05:00
sleep tests/kernel/sleep: Fix usleep test for fast ticks 2019-07-02 22:52:29 -04:00
smp license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
spinlock license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
stack k_stack: make it 64-bit compatible 2019-06-14 05:46:29 -04:00
threads boards: remove galileo board 2019-07-29 21:30:25 -07:00
tickless boards: remove quarl_se_c1000 2019-07-29 21:30:25 -07:00
timer docs: fix misspelling across the tree 2019-06-19 15:34:13 -05:00
workq tests: work_queue_api: Fix k_delayed_work_remaining_get() test 2019-07-23 13:54:39 +02:00
xip license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00