Programmers Model
ARM DDI 0500D
Copyright © 2013-2014 ARM. All rights reserved.
3-7
ID021414
Non-Confidential
The AArch32 Security state model is unchanged from the model for an ARMv7 implementation
that includes the Security Extensions and the Virtualization Extensions. When the
implementation uses the AArch32 Execution state for all Exception levels, many system
registers are banked to provide Secure and Non-secure instances, and:
•
The Secure instance is accessible only at EL3.
•
The Non-secure instance is accessible at EL1 or higher.
•
The two instances of a banked register have the same name.
The
ARMv8 security model
on page 3-8
describes how the Security state interacts with other
aspects of the ARMv8 architectural state.
3.2.4
Rules for changing execution 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.
—
Increase from AArch32 state to AArch64 state.
•
Cannot decrease from AArch64 state to AArch32 state.
On returning from an exception to a lower exception level, the execution state:
•
Can either:
—
Remain the same.
—
Decrease from AArch64 state to AArch32 state.
•
Cannot increase 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 a property of the implementation, and is determined by a
configuration input signal. 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.
3.2.5
Stack pointer selection
Stack pointer behavior depends on the execution state, as follows:
AArch64
In EL0, the stack pointer, SP, maps to the SP_EL0 stack pointer register.