mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-03 13:51:56 +00:00
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> |
||
---|---|---|
.. | ||
ia32 | ||
intel64 | ||
offsets | ||
acpi.c | ||
CMakeLists.txt | ||
common.S | ||
cpuhalt.c | ||
early_serial.c | ||
fatal.c | ||
ia32.cmake | ||
intel64.cmake | ||
Kconfig.ia32 | ||
Kconfig.intel64 | ||
memmap.c | ||
multiboot.c | ||
pcie.c | ||
prep_c.c | ||
reboot_rst_cnt.c | ||
spec_ctrl.c | ||
userspace.c | ||
x86_mmu.c |