5.8.2. Returning the processor from an ISR

Exception returns occur when one of the following instructions loads a value of 0xFFFFFFFX into the PC:

When used in this way, the value written to the PC is intercepted and is referred to as the EXC_RETURN value. EXC_RETURN[3:0] provides return information as defined in Table 5.6.

Table 5.6. Exception return behavior

EXC_RETURN[3:0]Description
0bXXX0Reserved.
0b0001

Return to Handler mode.

Exception return gets state from the main stack.

On return execution uses the main stack.

0b0011Reserved.
0b01X1Reserved.
0b1001

Return to Thread mode.

Exception return gets state from the main stack.

On return execution uses the main stack.

0b1101

Return to Thread mode.

Exception return gets state from the process stack.

On return execution uses the process stack.

0b1X11Reserved.

Reserved entries in this table result in a chained exception to a Usage Fault.

If an EXC_RETURN value is loaded into the PC when in Thread mode, or from the vector table, or by any other instruction, the value is treated as an address, not as a special value. This address range is defined to have Execute Never (XN) permissions, and results in a MemManage fault.

Copyright © 2005, 2006 ARM Limited. All rights reserved.ARM DDI 0337E
Non-Confidential