3.2.4 Rules for changing Exception state

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.
Non-ConfidentialPDF file icon PDF versionARM 100095_0002_04_en
Copyright © 2014-2016 ARM. All rights reserved.