-
Notifications
You must be signed in to change notification settings - Fork 182
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kern: suppress phantom SVCs on ARMv6-M
You might recognize this as #1134. Well, it's back. My fix for the problem on ARMv6-M was apparently never quite correct on M0+, because the core register we were relying on to detect and cancel a pending SVC -- SHCSR -- is _implemented_ but _only visible from the debugger._ So when I tried it by hand in openocd, it worked... but from the kernel it silently fails. ARM, you are not making friends with stuff like this. I've worked out a different way to _detect_ the "fault during SVC" case using the always-implemented ICSR register. That register doesn't provide any way to _cancel_ the SVC, so I've added conditional code to the syscall entry path that can do it. Fixes #1928.
- Loading branch information
Showing
5 changed files
with
68 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters