6.2.2 Fault status
When an abort occurs, information about the cause of the fault is recorded in several registers, depending on the type of abort.
The Link Register, Saved Program Status Register, and Fault Status Register are updated when any abort exception is taken.
- Link Register
The r14_abt register is updated to provide information
about the address of the instruction that the exception was taken
on, in a similar way to other types of exception. This information
can be used to resume program execution after the abort has been
Note: When a Prefetch Abort has occurred, ARM recommends that you do not use the link
register value for determining the aborting address, because 32-bit Thumb® instructions do not have to be word
aligned and can cause an abort on either halfword. This applies even if all the code in
the system does not use the extra 32-bit Thumb instructions introduced in ARMv6T2,
because the earlier
BLX instructions are both
32 bits long.
- Saved Program Status Register
The SPSR_abt register is updated to record the state
and mode of the processor when the exception was taken, in a similar
way to other types of exception.
- Fault Status Register
- There are two fault status registers, one for Prefetch
Aborts, Instruction Fault Status Register (IFSR)
and one for Data Aborts, Data Fault Status Register (DFSR).
These record the type of abort that occurred, and whether it occurred
on a read or a write. In particular, this enables the abort handler
to distinguish between synchronous aborts, asynchronous aborts,
and debug events.
The Fault Address Register is updated when a synchronous abort exception is taken.
- Fault Address Register
- There are two fault address registers, one for Prefetch
Aborts, Instruction Fault Address Register (IFAR)
and one for Data Aborts, Data Fault Address Register (DFAR).
These indicate the address of the memory access that caused the