Showing changes from revision #0 to #1:
Added | Removed | Changed
The data abort handler is entered in the following state:
If the handler is capable of handling the exception (e.g. by emulating the memory access) then it can resume execution by performing a suitable exception return operation.
On 26bit OS versions, the CPU will be in SVC26 mode, with R14 containing the combined LR+PSR.
The kernel’s default handler will save a copy of the ARM integer registers (corresponding to the CPU mode the exception occurred in) to the Exception Registers Block, reset the stack pointers for all the privileged CPU modes, and then call OS_GenerateError to report a Data Abort error.
Since abort environment handlers are called before the abort recovery code that exists in the kernel’s default environment handler, custom environment handlers should be very careful in how they operate, especially when it comes to calling external code (e.g. SWIs). For example, if the abort was caused by a supervisor stack overflow, calling a SWI from within your abort handler would result in a terminal abort loop.