zephyr/arch
Stephanos Ioannidis f769a03081 arch: arm: aarch32: Fix interrupt nesting
In the current interrupt nesting implementation, if an ISR is
interrupted while executing inside a branch, the lr_svc register will
be corrupted, and the branch of the interrupted ISR will exit to the
return address of the final branch of the interrupting ISR, which may
or may not correspond to the intended return address.

This commit fixes the aforementioned bug by storing the lr_svc register
in the stack at the ISR entry, and restoring its value before exiting
the ISR.

For more details, refer to the issue #30517.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2021-01-26 06:17:15 -05:00
..
arc arc: cache: Use new cache APIs 2021-01-19 14:31:02 -05:00
arm arch: arm: aarch32: Fix interrupt nesting 2021-01-26 06:17:15 -05:00
common gen_isr_tables: Added check of the IRQ num before accessing the vt 2021-01-24 10:12:54 -05:00
nios2 kernel: Cleanup logger setup in kernel files 2020-11-27 09:56:34 -05:00
posix posix: Add cpu_hold() function to better emulate code delay 2020-12-14 12:32:11 +01:00
riscv arch/riscv: boost default stacks 2021-01-15 13:06:33 -05:00
sparc lib/os/heap: introduce option to force big heap mode 2021-01-24 10:11:11 -05:00
x86 x86: map all RAM if ACPI 2021-01-23 19:47:23 -05:00
xtensa arch: xtensa: Print backtrace from panic handler 2021-01-23 08:43:10 -05:00
CMakeLists.txt cmake: fix include directories to work with out-of-tree arch 2020-08-05 08:06:07 -04:00
Kconfig x86: map all RAM if ACPI 2021-01-23 19:47:23 -05:00