Skip to content
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

HardFaultTrampoline now passes &mut ExceptionFrame #515

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

SCingolani
Copy link

In order to allow for a user provided HardFault handler to modify the exception frame (e.g. to return to a different PC) the signature for the function to be used with the #[HardFault] handler now has a &mut ExceptionFrame instead of just a reference.

Use case: we want to catch an exception, so we set some flag, run some code that might trigger a HardFault, update the flag in the handler, and return to the instruction after the one that caused the exception. We can then check the flag to see if an exception occurred or not. Key point is: to return to the instruction following the one that caused the exception, we want to modify the PC on the ExceptionFrame before loading EXC_RETURN onto the PC.

In order to allow for a user provided HardFault handler to modify the
exception frame (e.g. to return to a different PC) the signature for the
function to be used with the `#[HardFault]` handler now has a `&mut
ExceptionFrame` instead of just a reference.
@SCingolani SCingolani requested a review from a team as a code owner March 13, 2024 14:10
@thejpster
Copy link
Contributor

thejpster commented Mar 14, 2024

This would be a big breaking change.

Can the macro be adjusted to accept either a shared reference or a mutable reference as an argument to the handler function?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants