This introduction to moving between Execution states does
not consider exceptions caused by debug events.
The Execution state, AArch64 or AArch32, can change only on
a change of Exception level, meaning it can change only on either:
- Taking an exception to a
higher Exception level.
- Returning from an exception to a lower Exception
level.
Note
The Execution state cannot change if, on taking an exception or on returning
from an exception, the Exception level remains the same.
On taking an exception to a higher Exception level, the Execution
state:
Can either:
Remain the same.
- Change from AArch32 state to AArch64 state.
- Cannot change from AArch64 state to AArch32 state.
On returning from an exception to a lower Exception level,
the Execution state:
Can
either:
Remain
the same.
- Change from AArch64 state to AArch32 state.
- Cannot change from AArch32 state to AArch64 state.
On powerup and on reset, the processor enters EL3, the highest Exception
level. The Execution state for this Exception level is controlled
by the configuration input signal, AA64nAA32. For the
other Exception levels the Execution state is determined as follows:
- For an exception return to EL0, the EL0 Execution
state is specified as part of the exception return, subject to the
rules given in this section.
- Otherwise, the Execution state is determined by
one or more System register configuration bits, that can be set
only in a higher Exception level.