-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support nested interrupts on AArch32 (non-Cortex-M) #23636
Support nested interrupts on AArch32 (non-Cortex-M) #23636
Conversation
fa81128
to
b7c5188
Compare
All checks passed. Tip: The bot edits this comment instead of posting a new one, so you can check the comment's history to see earlier messages. |
|
I just realised I have a more recent (and advanced) version of this in one of my private branches ... (it's been a while since I worked on this and my memory is failing ...). I will push that version tomorrow. |
b7c5188
to
5d561cd
Compare
Shippable fails because
cc @nashif @SebastianBoe @ulfalizer p.s.
p.s. 4. CONFIG_GEN_ISR_TABLES=n in prj.conf seems to be causing this.
|
10da529
to
6690691
Compare
Rebased |
932ee2e
to
dfe0c1c
Compare
Rebased |
The current context preservation implementation saves the spsr and lr_irq registers, which contain the cpsr and pc register values of the interrupted context, in the thread callee-saved block and this prevents nesting of interrupts because these values are required to be part of the exception stack frame to preserve the nested interrupt context. This commit reworks the AArch32 non-Cortex-M context preservation implementation to save the spsr and lr_irq registers in the exception stack frame to allow preservation of the nested interrupt context as well as the interrupted thread context. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit enables nested interrupt test for the Cortex-R platforms that use the ARM Generic Interrupt Controller (GIC). Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit removes the ignore tags for the tests that work after the changes in the PR zephyrproject-rtos#23636. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
dfe0c1c
to
2166e0e
Compare
Rebased |
This commit allows the `QEMU_KERNEL_OPTION` variable, which can be overridden by the `board.cmake`, to contain references to the variables that are not available at the time of `board.cmake` inclusion, by expanding its escpaed variable references in `cmake/emu/qemu.cmake` which is included nearby the end of the root `CMakeLists.txt`. With this change, the `board.cmake` can escape variable references as follows and allow them to be expanded later: set(QEMU_KERNEL_OPTION "-device;loader,file=\$<TARGET_FILE:$\{...}>") Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2166e0e
to
e77b825
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good - just a small questions around a scratch register
cc @bbolen |
@carlocaione pls, review |
This commit removes the ignore tags for the tests that work after the changes in the PR #23636. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit removes the ignore tags for the tests that work after the changes in the PR zephyrproject-rtos#23636. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Includes the commits from #23518 and #23614.
Closes #22670.