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> |
||
---|---|---|
.. | ||
arc | ||
arm | ||
common | ||
nios2 | ||
posix | ||
riscv | ||
sparc | ||
x86 | ||
xtensa | ||
CMakeLists.txt | ||
Kconfig |