The Cortex-M4 processor PM0214
44/262 PM0214 Rev 9
Exception return
Exception return occurs when the processor is in Handler mode and executes one of the
following instructions to load the EXC_RETURN value into the PC:
• an LDM or POP instruction that loads the PC
• an LDR instruction with PC as the destination
• a BX instruction using any register.
EXC_RETURN is the value loaded into the LR on exception entry. The exception
mechanism relies on this value to detect when the processor has completed an exception
handler. The lowest five bits of this value provide information on the return stack and
processor mode. Table 18 shows the EXC_RETURN values with a description of the
exception return behavior.
All EXC_RETURN values have bits[31:5] set to one. When this value is loaded into the PC it
indicates to the processor that the exception is complete, and the processor initiates the
appropriate exception return sequence.
2.4 Fault handling
Faults are a subset of the exceptions. For more information, see Exception model on
page 37. The following elements generate a fault:
• A bus error on:
– An instruction fetch or vector table load
– A data access
• An internally-detected error such as an undefined instruction
• Attempting to execute an instruction from a memory region marked as Non-Executable
(XN).
• A privilege violation or an attempt to access an unmanaged region causing an MPU
fault.
Table 18. Exception return behavior
EXC_RETURN[31:0] Description
0xFFFFFFF1
Return to Handler mode, exception return uses non-floating-point state from
the MSP and execution uses MSP after return.
0xFFFFFFF9
Return to Thread mode, exception return uses non-floating-point state from
MSP and execution uses MSP after return.
0xFFFFFFFD
Return to Thread mode, exception return uses non-floating-point state from
the PSP and execution uses PSP after return.
0xFFFFFFE1
Return to Handler mode, exception return uses floating-point-state from MSP
and execution uses MSP after return.
0xFFFFFFE9
Return to Thread mode, exception return uses floating-point state from MSP
and execution uses MSP after return.
0xFFFFFFED
Return to Thread mode, exception return uses floating-point state from PSP
and execution uses PSP after return.