Showing changes from revision #1 to #2:
Added | Removed | Changed
Entry | |
---|---|
R0 | Dependent on Reason code |
R1 | Dependent on Reason code |
R2 | Reason code |
R4 | Dependent on Reason code |
Exit | |
---|---|
- |
This vector is called during serious error reporting and recovery, such as an Abort. It should not be claimed, but called to notify relevant sections of the OS that a serious error has occurred and/or recovery steps have been taken.
Note that handlers of SeriousErrorV have tighter restrictions placed on them than with other vectors. Specifically, reason code 0 will be called from ABT mode, with IRQ+FIQ disabled, and for safety they must stay within that state. For example, a C module cannot use standard CMHG veneers directly, because the veneer will attempt to switch to SVC mode on entry (running the risk of a recursive abort if the SVC stack pointer is invalid). If your handler is only interested in the SVC-mode reason codes, it’s recommended to use a pre-veneer infront of the CMHG veneer which will filter out all the codes which you are not interested in. Currently reason code 0 is the only reason code with tight restrictions like these, but more reason codes might be introduced in future, so filtering out unknown codes is the safest approach.
0 | Collect. Entered in ABT mode, IRQ+FIQ disabled |
1 | Recover. Entered in SVC mode, IRQ disabled |
2 | Report. Entered in SVC mode, IRQ enabled |
3 | Custom Report. Entered in SVC mode, IRQ enabled |
When a serious error occurs, the kernel undertakes the following procedure: