You copied the Doc URL to your clipboard.

EXC_RETURN register

The EXC_RETURN register is used to communicate additional information about which state to return to after handling an exception, and which registers need to be unstacked. EXC_RETURN is not an actual register that can be read.

On exception entry EXC_RETURN is the value that is loaded into the LR. The exception mechanism relies on this value to detect when the processor has completed an exception handler. The lowest 5 bits of this value provide information on the return stack and processor mode. The following table shows the EXC_RETURN values with a description of the exception return behavior.

The EXC_RETURN register has the following bit assignments:







Prefix. Indicates that this is an EXC_RETURN value.

This field reads as 0b11111111.






Indicates whether the stack frame to restore from is stored on a Secure or Non-secure stack. It is used together with the Mode bit and CONTROL.SPSEL to determine which of the four Stack Pointers is used to unstack the register state.

The possible values of this bit are:

0    Non-secure stack used.

1    Secure stack entry.



Default callee register stacking. Indicate whether the default stacking rules should apply, or whether the callee registers have already been pushed onto the stack and therefore do not need to be stacked again.

The possible values of this bit are:

0    Stacking of the callee saved registers skipped.

1    Default rules for stacking the callee registers followed.



Stack frame type. Indicates whether the stack frame is a standard integer-only stack frame, or an extended floating-point stack frame.

The possible values of this bit are:

0    Extended stack frame.

1    Standard stack frame.



The Mode to return to (as in the existing ARMv7‑M architecture).

The possible values of this bit are:

0    Handler mode.

1    Thread mode.



Stack pointer selection. Indicates which stack pointer the exception frame resides on.

The possible values of this bit are:

0    Main stack pointer.

1    Process stack pointer.



Reserved. Res1.



Indicates the security domain the exception is taken to:

The possible values of this bit are:

0    Non-secure.

1    Secure.

For implementations without the Security Extension;




Return to Handler mode.


Return to Thread mode using the main stack.


Return to Thread mode using the process stack.

Was this page helpful? Yes No