|Non-Confidential||PDF version||ARM DUI0471M|
|Home > Handling Processor Exceptions > Types of exception in ARMv6 and earlier, ARMv7-A and ARMv7-R profiles|
Exceptions are handled in turn before returning to the original application. When exceptions occur simultaneously, they are handled in a fixed order of priority, depending on their type.
The following table shows the different types of exception recognized by ARMv6 and earlier, the ARMv7-A and ARMv7-R profiles. It is not possible for all exceptions to occur concurrently. For example, the undefined instruction (Undef) and supervisor call (SVC) exceptions are mutually exclusive because they are both triggered by executing an instruction.
On entry to an exception:
interrupt requests (IRQs) are disabled for all exceptions
fast interrupt requests (FIQs) are disabled for FIQ and Reset exceptions.
Table 5-1 Exception types in priority order for ARMv6 and earlier, ARMv7-A and ARMv7-R profiles
|Priority (1=high, 6=low)||Exception type||Exception mode||Description|
|1||Reset||Supervisor||Occurs when the processor reset pin is asserted. This exception is only expected to occur for signaling power-up, or for resetting if the processor is already powered up. A soft reset can be done by branching to the reset vector.|
|2||Data Abort||Abort||Occurs when a data transfer instruction attempts to load or store data at an illegal address.|
|3||FIQ||FIQ||Occurs when the processor external fast interrupt request pin is asserted (LOW) and the F bit in the CPSR is clear.|
|4||IRQ||IRQ||Occurs when the processor external interrupt request pin is asserted (LOW) and the I bit in the CPSR is clear.|
|5||Prefetch Abort||Abort||Occurs when the processor attempts to execute an instruction that was not fetched, because the address was illegala.|
|6||SVC||Supervisor||This is a user-defined synchronous interrupt instruction. It enables a program running in User mode, for example, to request privileged operations that run in Supervisor mode, such as an RTOS function.|
|6||Undefined Instruction||Undef||Occurs if neither the processor, nor any attached coprocessor, recognizes the currently executing instruction.|
Because the Data Abort exception has a higher priority than the FIQ exception, the Data Abort is actually registered before the FIQ is handled. The Data Abort handler is entered, but control is then passed immediately to the FIQ handler because the FIQ remains enabled when handling a Data Abort. When the FIQ has been handled, control returns to the Data Abort Handler. This means that data transfer errors do not escape detection as they would if the FIQ was handled first.