zephyr/arch/x86
Andy Ross 5b85d6da6a arch/x86_64: Poison instruction pointer of running threads
There was a bug where double-dispatch of a single thread on multiple
SMP CPUs was possible.  This can be mind-bending to diagnose, so when
CONFIG_ASSERT is enabled add an extra instruction to __resume (the
shared code path for both interupt return and context switch) that
poisons the shared RIP of the now-running thread with a recognizable
invalid value.

Now attempts to run the thread again will crash instantly with a
discoverable cookie in their instruction pointer, and this will remain
true until it gets a new RIP at the next interrupt or switch.

This is under CONFIG_ASSERT because it meets the same design goals of
"a cheap test for impossible situations", not because it's part of the
assertion framework.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-02-03 09:31:56 -05:00
..
core arch/x86_64: Poison instruction pointer of running threads 2020-02-03 09:31:56 -05:00
include x86: implement kernel page table isolation 2020-01-17 16:17:39 -05:00
CMakeLists.txt x86: consolidate x86_64 architecture, SoC and boards 2019-10-25 17:57:55 -04:00
Kconfig x86: implement kernel page table isolation 2020-01-17 16:17:39 -05:00
gen_gdt.py
gen_idt.py
ia32.cmake
intel64.cmake