zephyr/include
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
..
app_memory cleanup: include/: move misc/dlist.h to sys/dlist.h 2019-06-27 22:55:49 -04:00
arch x86: use per-thread page tables 2019-08-05 13:25:50 +02:00
audio cleanup: include/: move i2s.h to drivers/i2s.h 2019-06-27 22:55:49 -04:00
bluetooth Bluetooth: Host: Fix bluetooth address string length 2019-08-05 12:17:57 +02:00
cmsis_rtos_v1 all: Add 'U' suffix when using unsigned variables 2019-03-28 17:15:58 -05:00
cmsis_rtos_v2
console cleanup: include/: move tty.h to console/tty.h 2019-06-27 22:55:49 -04:00
crypto cleanup: include/: move misc/util.h to sys/util.h 2019-06-27 22:55:49 -04:00
data include: json: reorder designated initializers 2019-07-22 18:10:51 -07:00
debug include: gcov: fix compilation error 2019-07-03 07:19:49 -07:00
dfu cleanup: include/: move flash_map.h to storage/flash_map.h 2019-06-27 22:55:49 -04:00
disk sdhc: rename disk_access_sdhc.c 2019-07-10 11:58:15 -05:00
display subsys/cfb: improve font structure packing 2019-07-31 05:43:50 -04:00
drivers drivers/adc: provide API to access reference voltage 2019-08-01 13:28:41 +02:00
dt-bindings clock/usdhc: Enable clock of USDHC of i.MXRT 2019-07-10 11:58:15 -05:00
fs fs/nvs: improve C++ compatibility 2019-08-05 10:55:25 +02:00
linker riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
logging logging: Clean up log.h dependencies 2019-08-01 14:42:40 +02:00
mgmt smp: shell: Add support for SMP in new shell. 2019-01-15 17:19:20 -05:00
misc cleanup: include/: move misc/reboot.h to power/reboot.h 2019-06-27 22:55:49 -04:00
net net: mqtt: Modify SOCKS5 based connections 2019-08-05 13:26:11 +03:00
nvs cleanup: include/: move nvs/nvs.h to fs/nvs.h 2019-06-27 22:55:49 -04:00
posix posix: unistd.h: open() doesn't belong here 2019-07-25 13:50:58 -04:00
power cleanup: include/: move misc/reboot.h to power/reboot.h 2019-06-27 22:55:49 -04:00
random
settings cleanup: include/: move misc/util.h to sys/util.h 2019-06-27 22:55:49 -04:00
shell shell_history: align buffer to pointer size 2019-07-04 09:28:47 +02:00
stats cleanup: include/: move stats.h to stats/stats.h 2019-06-27 22:55:49 -04:00
storage cleanup: include/: move flash_map.h to storage/flash_map.h 2019-06-27 22:55:49 -04:00
sys mempool: simplify the logic for sizing the free block bitmap 2019-07-31 10:09:29 -07:00
toolchain riscv32: rename to riscv 2019-08-02 13:54:48 -07:00
usb usb: sort usb config data by section 2019-06-27 12:18:05 +02:00
zephyr riscv: make core code 64-bit compatible 2019-08-02 13:54:48 -07:00
adc.h cleanup: include/: move adc.h to drivers/adc.h 2019-06-27 22:55:49 -04:00
atomic.h cleanup: include/: move atomic.h to sys/atomic.h 2019-06-27 22:55:49 -04:00
base64.h cleanup: include/: move base64.h to sys/base64.h 2019-06-27 22:55:49 -04:00
cache.h
can.h cleanup: include/: move can.h to drivers/can.h 2019-06-27 22:55:49 -04:00
clock_control.h cleanup: include/: move clock_control.h to drivers/clock_control.h 2019-06-27 22:55:49 -04:00
console.h cleanup: include/: move console.h to console/console.h 2019-06-27 22:55:49 -04:00
counter.h cleanup: include/: move counter.h to drivers/counter.h 2019-06-27 22:55:49 -04:00
crc.h cleanup: include/: move crc.h to sys/crc.h 2019-06-27 22:55:49 -04:00
device.h linker generated list: explicit alignment on data definitions 2019-06-06 14:21:32 -07:00
disk_access.h cleanup: include/: move disk_access.h to disk/disk_access.h 2019-06-27 22:55:49 -04:00
display.h cleanup: include/: move display.h to drivers/display.h 2019-06-27 22:55:49 -04:00
dma.h cleanup: include/: move dma.h to drivers/dma.h 2019-06-27 22:55:49 -04:00
entropy.h cleanup: include/: move entropy.h to drivers/entropy.h 2019-06-27 22:55:49 -04:00
espi.h API: espi: Add API for Enhanced Serial Peripheral Interface 2019-07-25 08:23:38 -07:00
exc_handle.h
fatal.h kernel: rename NANO_ESF 2019-07-25 15:06:58 -07:00
fcb.h cleanup: include/: move fcb.h to fs/fcb.h 2019-06-27 22:55:49 -04:00
flash_map.h cleanup: include/: move flash_map.h to storage/flash_map.h 2019-06-27 22:55:49 -04:00
flash.h cleanup: include/: move flash.h to drivers/flash.h 2019-06-27 22:55:49 -04:00
fs.h cleanup: include/: move fs.h to fs/fs.h 2019-06-27 22:55:49 -04:00
generated_dts_board.h dts: Add new DTS/binding parser 2019-07-29 16:22:17 -04:00
gna.h cleanup: include/: move gna.h to drivers/gna.h 2019-06-27 22:55:49 -04:00
gpio.h cleanup: include/: move gpio.h to drivers/gpio.h 2019-06-27 22:55:49 -04:00
hwinfo.h cleanup: include/: move hwinfo.h to drivers/hwinfo.h 2019-06-27 22:55:49 -04:00
i2c.h cleanup: include/: move i2c.h to drivers/i2c.h 2019-06-27 22:55:49 -04:00
i2s.h cleanup: include/: move i2s.h to drivers/i2s.h 2019-06-27 22:55:49 -04:00
init.h all: Update reserved function names 2019-03-11 13:48:42 -04:00
ipm.h cleanup: include/: move ipm.h to drivers/ipm.h 2019-06-27 22:55:49 -04:00
irq_nextlevel.h
irq_offload.h
irq.h all: Update reserved function names 2019-03-11 13:48:42 -04:00
json.h cleanup: include/: move json.h to data/json.h 2019-06-27 22:55:49 -04:00
kernel_includes.h kernel: consolidate error handling code 2019-07-25 15:06:58 -07:00
kernel_version.h
kernel.h userspace: clarify k_mem_partition_add() 2019-08-05 13:25:50 +02:00
led_strip.h cleanup: include/: move led_strip.h to drivers/led_strip.h 2019-06-27 22:55:49 -04:00
led.h cleanup: include/: move led.h to drivers/led.h 2019-06-27 22:55:49 -04:00
pinmux.h cleanup: include/: move pinmux.h to drivers/pinmux.h 2019-06-27 22:55:49 -04:00
power.h cleanup: include/: move power.h to power/power.h 2019-06-27 22:55:49 -04:00
ptp_clock.h cleanup: include/: move misc/util.h to sys/util.h 2019-06-27 22:55:49 -04:00
pwm.h cleanup: include/: move pwm.h to drivers/pwm.h 2019-06-27 22:55:49 -04:00
ring_buffer.h cleanup: include/: move ring_buffer.h to sys/ring_buffer.h 2019-06-27 22:55:49 -04:00
rtc.h cleanup: include/: move rtc.h to drivers/rtc.h 2019-06-27 22:55:49 -04:00
sched_priq.h cleanup: include/: move misc/util.h to sys/util.h 2019-06-27 22:55:49 -04:00
sensor.h cleanup: include/: move sensor.h to drivers/sensor.h 2019-06-27 22:55:49 -04:00
shared_irq.h
spi.h cleanup: include/: move spi.h to drivers/spi.h 2019-06-27 22:55:49 -04:00
spinlock.h cleanup: include/: move misc/__assert.h to sys/__assert.h 2019-06-27 22:55:49 -04:00
stats.h cleanup: include/: move stats.h to stats/stats.h 2019-06-27 22:55:49 -04:00
sw_isr_table.h Z_ISR_DECLARE: ensure proper alignment on 64-bit targets 2019-07-25 14:01:24 -07:00
sys_clock.h cleanup: include/: move misc/util.h to sys/util.h 2019-06-27 22:55:49 -04:00
sys_io.h cleanup: include/: move sys_io.h to sys/sys_io.h 2019-06-27 22:55:49 -04:00
syscall.h syscall: Fix comment 2019-04-12 17:59:25 -04:00
toolchain.h toolchain: Define a HAS_BUILTIN(x) macro in toolchain.h. 2019-05-14 19:53:30 -05:00
tracing.h cleanup: include/: move tracing.h to debug/tracing.h 2019-06-27 22:55:49 -04:00
tty.h cleanup: include/: move tty.h to console/tty.h 2019-06-27 22:55:49 -04:00
uart.h cleanup: include/: move uart.h to drivers/uart.h 2019-06-27 22:55:49 -04:00
updatehub.h lib: updatehub: Add UpdateHub.io support 2019-06-05 00:20:37 +02:00
watchdog.h cleanup: include/: move watchdog.h to drivers/watchdog.h 2019-06-27 22:55:49 -04:00
zephyr.h