Provides top level control of the system, including its memory system, at EL1 and EL0.
AArch64 System register SCTLR_EL1 bits [31:0] are architecturally mapped to AArch32 System register SCTLR[31:0].
SCTLR_EL1 is a 64-bit register.
63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
TIDCP | SPINTMASK | NMI | EnTP2 | TCSO | TCSO0 | EPAN | EnALS | EnAS0 | EnASR | TME | TME0 | TMT | TMT0 | TWEDEL | TWEDEn | DSSBS | ATA | ATA0 | TCF | TCF0 | ITFSB | BT1 | BT0 | EnFPM | MSCEn | CMOW | |||||
EnIA | EnIB | LSMAOE | nTLSMD | EnDA | UCI | EE | E0E | SPAN | EIS | IESB | TSCXT | WXN | nTWE | RES0 | nTWI | UCT | DZE | EnDB | I | EOS | EnRCTX | UMA | SED | ITD | nAA | CP15BEN | SA0 | SA | C | A | M |
Trap IMPLEMENTATION DEFINED functionality. When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps EL0 accesses to the encodings reserved for IMPLEMENTATION DEFINED functionality to EL1.
TIDCP | Meaning |
---|---|
0b0 |
No instructions accessing the System register or System instruction spaces are trapped by this mechanism. |
0b1 | Instructions accessing the following System register or System instruction spaces are trapped to EL1 by this mechanism:
|
The reset behavior of this field is:
Reserved, RES0.
SP Interrupt Mask enable. When SCTLR_EL1.NMI is 1, controls whether PSTATE.SP acts as an interrupt mask, and controls the value of PSTATE.ALLINT on taking an exception to EL1.
SPINTMASK | Meaning |
---|---|
0b0 | Does not cause PSTATE.SP to mask interrupts. PSTATE.ALLINT is set to 1 on taking an exception to EL1. |
0b1 | When PSTATE.SP is 1 and execution is at EL1, an IRQ or FIQ interrupt that is targeted to EL1 is masked regardless of any denotion of Superpriority. PSTATE.ALLINT is set to 0 on taking an exception to EL1. |
The reset behavior of this field is:
Reserved, RES0.
Non-maskable Interrupt enable.
NMI | Meaning |
---|---|
0b0 |
This control does not affect interrupt masking behavior. |
0b1 | This control enables all of the following:
|
The reset behavior of this field is:
Reserved, RES0.
Traps instructions executed at EL0 that access TPIDR2_EL0 to EL1, or to EL2 when EL2 is implemented and enabled for the current Security state and HCR_EL2.TGE is 1. The exception is reported using ESR_ELx.EC value 0x18.
EnTP2 | Meaning |
---|---|
0b0 |
This control causes execution of these instructions at EL0 to be trapped. |
0b1 |
This control does not cause execution of any instructions to be trapped. |
If the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
Tag Checking Store Only.
TCSO | Meaning |
---|---|
0b0 |
This field has no effect on Tag checking. |
0b1 |
Load instructions executed in EL1 are Tag Unchecked. |
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, Tag Checking Store Only in EL0.
TCSO0 | Meaning |
---|---|
0b0 |
This field has no effect on Tag checking. |
0b1 |
Load instructions executed in EL0 are Tag Unchecked. |
The reset behavior of this field is:
Reserved, RES0.
Enhanced Privileged Access Never. When PSTATE.PAN is 1, determines whether an EL1 data access to a page with stage 1 EL0 instruction access permission generates a Permission fault as a result of the Privileged Access Never mechanism.
EPAN | Meaning |
---|---|
0b0 |
No additional Permission faults are generated by this mechanism. |
0b1 | An EL1 data access to a page with stage 1 EL0 data access permission or stage 1 EL0 instruction access permission generates a Permission fault. Any speculative data accesses that would generate a Permission fault as a result of PSTATE.PAN = 1 if the accesses were not speculative, will not cause an allocation into a cache. |
This bit is permitted to be cached in a TLB.
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps execution of an LD64B or ST64B instruction at EL0 to EL1.
EnALS | Meaning |
---|---|
0b0 |
Execution of an LD64B or ST64B instruction at EL0 is trapped to EL1. |
0b1 |
This control does not cause any instructions to be trapped. |
A trap of an LD64B or ST64B instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000002.
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps execution of an ST64BV0 instruction at EL0 to EL1.
EnAS0 | Meaning |
---|---|
0b0 |
Execution of an ST64BV0 instruction at EL0 is trapped to EL1. |
0b1 |
This control does not cause any instructions to be trapped. |
A trap of an ST64BV0 instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000001.
The reset behavior of this field is:
Reserved, RES0.
When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, traps execution of an ST64BV instruction at EL0 to EL1.
EnASR | Meaning |
---|---|
0b0 |
Execution of an ST64BV instruction at EL0 is trapped to EL1. |
0b1 |
This control does not cause any instructions to be trapped. |
A trap of an ST64BV instruction is reported using an ESR_ELx.EC value of 0x0A, with an ISS code of 0x0000000.
The reset behavior of this field is:
Reserved, RES0.
Enables the Transactional Memory Extension at EL1.
TME | Meaning |
---|---|
0b0 |
Any attempt to execute a TSTART instruction at EL1 is trapped to EL1, unless HCR_EL2.TME or SCR_EL3.TME causes TSTART instructions to be UNDEFINED at EL1. |
0b1 |
This control does not cause any TSTART instruction to be trapped. |
The reset behavior of this field is:
Reserved, RES0.
Enables the Transactional Memory Extension at EL0.
TME0 | Meaning |
---|---|
0b0 |
Any attempt to execute a TSTART instruction at EL0 is trapped to EL1, unless HCR_EL2.TME or SCR_EL3.TME causes TSTART instructions to be UNDEFINED at EL0. |
0b1 |
This control does not cause any TSTART instruction to be trapped. |
If the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
Forces a trivial implementation of the Transactional Memory Extension at EL1.
TMT | Meaning |
---|---|
0b0 |
This control does not cause any TSTART instruction to fail. |
0b1 |
When the TSTART instruction is executed at EL1, the transaction fails with a TRIVIAL failure cause. |
The reset behavior of this field is:
Reserved, RES0.
Forces a trivial implementation of the Transactional Memory Extension at EL0.
TMT0 | Meaning |
---|---|
0b0 |
This control does not cause any TSTART instruction to fail. |
0b1 |
When the TSTART instruction is executed at EL0, the transaction fails with a TRIVIAL failure cause. |
If the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
TWE Delay. A 4-bit unsigned number that, when SCTLR_EL1.TWEDEn is 1, encodes the minimum delay in taking a trap of WFE* caused by SCTLR_EL1.nTWE as 2(TWEDEL + 8) cycles.
The reset behavior of this field is:
Reserved, RES0.
TWE Delay Enable. Enables a configurable delayed trap of the WFE* instruction caused by SCTLR_EL1.nTWE.
TWEDEn | Meaning |
---|---|
0b0 |
The delay for taking the trap is IMPLEMENTATION DEFINED. |
0b1 |
The delay for taking the trap is at least the number of cycles defined in SCTLR_EL1.TWEDEL. |
The reset behavior of this field is:
Reserved, RES0.
Default PSTATE.SSBS value on Exception Entry.
DSSBS | Meaning |
---|---|
0b0 |
PSTATE.SSBS is set to 0 on an exception to EL1. |
0b1 |
PSTATE.SSBS is set to 1 on an exception to EL1. |
The reset behavior of this field is:
Reserved, RES0.
Allocation Tag Access in EL1.
When SCR_EL3.ATA == 1 and HCR_EL2.ATA == 1, controls access to Allocation Tags and Tag Check operations in EL1.
ATA | Meaning |
---|---|
0b0 | Access to Allocation Tags is prevented at EL1. Memory accesses at EL1 are not subject to a Tag Check operation. |
0b1 | This control does not prevent access to Allocation Tags at EL1. Tag Checked memory accesses at EL1 are subject to a Tag Check operation. The Tag Check operation depends on the type of tag at the memory being accessed:
|
The reset behavior of this field is:
Reserved, RES0.
Allocation Tag Access in EL0.
When SCR_EL3.ATA == 1, HCR_EL2.ATA == 1, and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, controls access to Allocation Tags and Tag Check operations in EL0.
ATA0 | Meaning |
---|---|
0b0 | Access to Allocation Tags is prevented at EL0. Memory accesses at EL0 are not subject to a Tag Check operation. |
0b1 | This control does not prevent access to Allocation Tags at EL0. Tag Checked memory accesses at EL0 are subject to a Tag Check operation. The Tag Check operation depends on the type of tag at the memory being accessed:
|
Software may change this control bit on a context switch.
The reset behavior of this field is:
Reserved, RES0.
Tag Check Fault in EL1. Controls the effect of Tag Check Faults due to Loads and Stores in EL1.
TCF | Meaning | Applies when |
---|---|---|
0b00 |
Tag Check Faults have no effect on the PE. | |
0b01 |
Tag Check Faults cause a synchronous exception. | |
0b10 |
Tag Check Faults are asynchronously accumulated. | |
0b11 |
Tag Check Faults cause a synchronous exception on reads, and are asynchronously accumulated on writes. | When FEAT_MTE3 is implemented |
If FEAT_MTE3 is not implemented, the value 0b11 is reserved.
The reset behavior of this field is:
Reserved, RES0.
Tag Check Fault in EL0. When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, controls the effect of Tag Check Faults due to Loads and Stores in EL0.
TCF0 | Meaning | Applies when |
---|---|---|
0b00 |
Tag Check Faults have no effect on the PE. | |
0b01 |
Tag Check Faults cause a synchronous exception. | |
0b10 |
Tag Check Faults are asynchronously accumulated. | |
0b11 |
Tag Check Faults cause a synchronous exception on reads, and are asynchronously accumulated on writes. | When FEAT_MTE3 is implemented |
If FEAT_MTE3 is not implemented, the value 0b11 is reserved.
Software may change this control bit on a context switch.
The reset behavior of this field is:
Reserved, RES0.
When synchronous exceptions are not being generated by Tag Check Faults, this field controls whether on exception entry into EL1, all Tag Check Faults due to instructions executed before exception entry, that are reported asynchronously, are synchronized into TFSRE0_EL1 and TFSR_EL1 registers.
ITFSB | Meaning |
---|---|
0b0 |
Tag Check Faults are not synchronized on entry to EL1. |
0b1 |
Tag Check Faults are synchronized on entry to EL1. |
The reset behavior of this field is:
Reserved, RES0.
PAC Branch Type compatibility at EL1.
BT1 | Meaning |
---|---|
0b0 |
When the PE is executing at EL1, PACIASP and PACIBSP are compatible with PSTATE.BTYPE == 0b11. |
0b1 |
When the PE is executing at EL1, PACIASP and PACIBSP are not compatible with PSTATE.BTYPE == 0b11. |
The reset behavior of this field is:
Reserved, RES0.
PAC Branch Type compatibility at EL0.
BT0 | Meaning |
---|---|
0b0 |
When the PE is executing at EL0, PACIASP and PACIBSP are compatible with PSTATE.BTYPE == 0b11. |
0b1 |
When the PE is executing at EL0, PACIASP and PACIBSP are not compatible with PSTATE.BTYPE == 0b11. |
When the value of the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, the value of SCTLR_EL1.BT0 has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
Enables the following accesses to FPMR from EL0 to EL1, or to EL2 when EL2 is implemented and enabled in the current Security state and HCR_EL2.TGE is 1:
EnFPM | Meaning |
---|---|
0b0 |
EL0 accesses to FPMR are disabled and trapped to EL1 or EL2. |
0b1 |
This control does not cause any instructions to be trapped. |
Traps are not taken if there is a higher priority exception generated by the access.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0, and the SCTLR_EL2.EnFPM control is used for this purpose.
The reset behavior of this field is:
Reserved, RES0.
Memory Copy and Memory Set instructions Enable. Enables execution of the Memory Copy and Memory Set instructions at EL0.
MSCEn | Meaning |
---|---|
0b0 |
Execution of the Memory Copy and Memory Set instructions is UNDEFINED at EL0. |
0b1 |
This control does not cause any instructions to be UNDEFINED. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, the Effective value of this bit is 0b1.
The reset behavior of this field is:
Reserved, RES0.
Controls cache maintenance instruction permission for the following instructions executed at EL0.
CMOW | Meaning |
---|---|
0b0 |
These instructions executed at EL0 with stage 1 read permission, but without stage 1 write permission, do not generate a stage 1 permission fault. |
0b1 |
If enabled as a result of SCTLR_EL1.UCI==1, these instructions executed at EL0 with stage 1 read permission, but without stage 1 write permission, generate a stage 1 permission fault. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
For this control, stage 1 has write permission if all of the following apply:
This bit is permitted to be cached in a TLB.
The reset behavior of this field is:
Reserved, RES0.
Controls enabling of pointer authentication of instruction addresses, using the APIAKey_EL1 key, in the EL1&0 translation regime.
EnIA | Meaning |
---|---|
0b0 |
Pointer authentication of instruction addresses, using the APIAKey_EL1 key, is not enabled. |
0b1 |
Pointer authentication of instruction addresses, using the APIAKey_EL1 key, is enabled. |
This field controls the behavior of the AddPACIA and AuthIA pseudocode functions. Specifically, when the field is 1, AddPACIA returns a copy of a pointer to which a pointer authentication code has been added, and AuthIA returns an authenticated copy of a pointer. When the field is 0, both of these functions are NOP.
The reset behavior of this field is:
Reserved, RES0.
Controls enabling of pointer authentication of instruction addresses, using the APIBKey_EL1 key, in the EL1&0 translation regime.
EnIB | Meaning |
---|---|
0b0 |
Pointer authentication of instruction addresses, using the APIBKey_EL1 key, is not enabled. |
0b1 |
Pointer authentication of instruction addresses, using the APIBKey_EL1 key, is enabled. |
This field controls the behavior of the AddPACIB and AuthIB pseudocode functions. Specifically, when the field is 1, AddPACIB returns a copy of a pointer to which a pointer authentication code has been added, and AuthIB returns an authenticated copy of a pointer. When the field is 0, both of these functions are NOP.
The reset behavior of this field is:
Reserved, RES0.
Load Multiple and Store Multiple Atomicity and Ordering Enable.
LSMAOE | Meaning |
---|---|
0b0 |
For all memory accesses at EL0, A32 and T32 Load Multiple and Store Multiple can have an interrupt taken during the sequence memory accesses, and the memory accesses are not required to be ordered. |
0b1 |
The ordering and interrupt behavior of A32 and T32 Load Multiple and Store Multiple at EL0 is as defined for Armv8.0. |
This bit is permitted to be cached in a TLB.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES1.
No Trap Load Multiple and Store Multiple to Device-nGRE/Device-nGnRE/Device-nGnRnE memory.
nTLSMD | Meaning |
---|---|
0b0 |
All memory accesses by A32 and T32 Load Multiple and Store Multiple at EL0 that are marked at stage 1 as Device-nGRE/Device-nGnRE/Device-nGnRnE memory are trapped and generate a stage 1 Alignment fault. |
0b1 |
All memory accesses by A32 and T32 Load Multiple and Store Multiple at EL0 that are marked at stage 1 as Device-nGRE/Device-nGnRE/Device-nGnRnE memory are not trapped. |
This bit is permitted to be cached in a TLB.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES1.
Controls enabling of pointer authentication of instruction addresses, using the APDAKey_EL1 key, in the EL1&0 translation regime.
EnDA | Meaning |
---|---|
0b0 |
Pointer authentication of data addresses, using the APDAKey_EL1 key, is not enabled. |
0b1 |
Pointer authentication of data addresses, using the APDAKey_EL1 key, is enabled. |
This field controls the behavior of the AddPACDA and AuthDA pseudocode functions. Specifically, when the field is 1, AddPACDA returns a copy of a pointer to which a pointer authentication code has been added, and AuthDA returns an authenticated copy of a pointer. When the field is 0, both of these functions are NOP.
The reset behavior of this field is:
Reserved, RES0.
Traps EL0 execution of cache maintenance instructions, to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, from AArch64 state only, reported using an ESR_ELx.EC value of 0x18.
This applies to DC CVAU, DC CIVAC, DC CVAC, DC CVAP, and IC IVAU.
If FEAT_DPB2 is implemented, this trap also applies to DC CVADP.
If FEAT_MTE is implemented, this trap also applies to DC CIGVAC, DC CIGDVAC, DC CGVAC, DC CGDVAC, DC CGVAP, and DC CGDVAP.
If FEAT_DPB2 and FEAT_MTE are implemented, this trap also applies to DC CGVADP and DC CGDVADP.
UCI | Meaning |
---|---|
0b0 |
Execution of the specified instructions at EL0 using AArch64 is trapped. |
0b1 |
This control does not cause any instructions to be trapped. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
If the Point of Coherency is before any level of data cache, it is IMPLEMENTATION DEFINED whether the execution of any data or unified cache clean, or clean and invalidate instruction that operates by VA to the point of coherency can be trapped when the value of this control is 1.
If the Point of Unification is before any level of data cache, it is IMPLEMENTATION DEFINED whether the execution of any data or unified cache clean by VA to the Point of Unification instruction can be trapped when the value of this control is 1.
If the Point of Unification is before any level of instruction cache, it is IMPLEMENTATION DEFINED whether the execution of any instruction cache invalidate by VA to the Point of Unification instruction can be trapped when the value of this control is 1.
The reset behavior of this field is:
Endianness of data accesses at EL1, and stage 1 translation table walks in the EL1&0 translation regime.
EE | Meaning |
---|---|
0b0 |
Explicit data accesses at EL1, and stage 1 translation table walks in the EL1&0 translation regime are little-endian. |
0b1 |
Explicit data accesses at EL1, and stage 1 translation table walks in the EL1&0 translation regime are big-endian. |
If an implementation does not provide Big-endian support at Exception levels higher than EL0, this bit is RES0.
If an implementation does not provide Little-endian support at Exception levels higher than EL0, this bit is RES1.
The EE bit is permitted to be cached in a TLB.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on the PE.
The reset behavior of this field is:
Endianness of data accesses at EL0.
E0E | Meaning |
---|---|
0b0 |
Explicit data accesses at EL0 are little-endian. |
0b1 |
Explicit data accesses at EL0 are big-endian. |
If an implementation only supports Little-endian accesses at EL0, then this bit is RES0. This option is not permitted when SCTLR_EL1.EE is RES1.
If an implementation only supports Big-endian accesses at EL0, then this bit is RES1. This option is not permitted when SCTLR_EL1.EE is RES0.
This bit has no effect on the endianness of LDTR, LDTRH, LDTRSH, LDTRSW, STTR, and STTRH instructions executed at EL1.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Set Privileged Access Never, on taking an exception to EL1.
SPAN | Meaning |
---|---|
0b0 |
PSTATE.PAN is set to 1 on taking an exception to EL1. |
0b1 |
The value of PSTATE.PAN is left unchanged on taking an exception to EL1. |
The reset behavior of this field is:
Reserved, RES1.
Exception Entry is Context Synchronizing.
EIS | Meaning |
---|---|
0b0 |
The taking of an exception to EL1 is not a context synchronizing event. |
0b1 |
The taking of an exception to EL1 is a context synchronizing event. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
If SCTLR_EL1.EIS is set to 0b0:
The following are not affected by the value of SCTLR_EL1.EIS:
The reset behavior of this field is:
Reserved, RES1.
Implicit Error Synchronization event enable. Possible values are:
IESB | Meaning |
---|---|
0b0 |
Disabled. |
0b1 | An implicit error synchronization event is added:
|
If FEAT_DoubleFault2 is implemented, the PE is in Non-debug state, and the Effective value of SCTLR2_EL1.NMEA is 1, then SCTLR_EL1.IESB is ignored and the PE behaves as if SCTLR_EL1.IESB is 1 for all purposes other than direct read of the register.
When the PE is in Debug state, the effect of this field is CONSTRAINED UNPREDICTABLE, and its Effective value might be 0 or 1 regardless of the value of the field. If the Effective value of the field is 1, then an implicit error synchronization event is added after each DCPSx instruction taken to EL1 and before each DRPS instruction executed at EL1, in addition to the other cases where it is added.
The reset behavior of this field is:
Reserved, RES0.
Trap EL0 Access to the SCXTNUM_EL0 register, when EL0 is using AArch64.
TSCXT | Meaning |
---|---|
0b0 |
EL0 access to SCXTNUM_EL0 is not disabled by this mechanism. |
0b1 | EL0 access to SCXTNUM_EL0 is disabled, causing an exception to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1. The value of SCXTNUM_EL0 is treated as 0. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES1.
Write permission implies XN (Execute-never). For the EL1&0 translation regime, this bit can force all memory regions that are writable to be treated as XN.
WXN | Meaning |
---|---|
0b0 |
This control has no effect on memory access permissions. |
0b1 |
Any region that is writable in the EL1&0 translation regime is forced to XN for accesses from software executing at EL1 or EL0. |
This bit applies only when SCTLR_EL1.M bit is set.
The WXN bit is permitted to be cached in a TLB.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on the PE.
The reset behavior of this field is:
Traps EL0 execution of WFE instructions to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, from both Execution states, reported using an ESR_ELx.EC value of 0x01.
When FEAT_WFxT is implemented, this trap also applies to the WFET instruction.
nTWE | Meaning |
---|---|
0b0 |
Any attempt to execute a WFE instruction at EL0 is trapped, if the instruction would otherwise have caused the PE to enter a low-power state. |
0b1 |
This control does not cause any instructions to be trapped. |
In AArch32 state, the attempted execution of a conditional WFE instruction is only trapped if the instruction passes its condition code check.
Since a WFE or WFI can complete at any time, even without a Wakeup event, the traps on WFE of WFI are not guaranteed to be taken, even if the WFE or WFI is executed when there is no Wakeup event. The only guarantee is that if the instruction does not complete in finite time in the absence of a Wakeup event, the trap will be taken.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
Traps EL0 execution of WFI instructions to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, from both Execution states, reported using an ESR_ELx.EC value of 0x01.
When FEAT_WFxT is implemented, this trap also applies to the WFIT instruction.
nTWI | Meaning |
---|---|
0b0 |
Any attempt to execute a WFI instruction at EL0 is trapped, if the instruction would otherwise have caused the PE to enter a low-power state. |
0b1 |
This control does not cause any instructions to be trapped. |
In AArch32 state, the attempted execution of a conditional WFI instruction is only trapped if the instruction passes its condition code check.
Since a WFE or WFI can complete at any time, even without a Wakeup event, the traps on WFE of WFI are not guaranteed to be taken, even if the WFE or WFI is executed when there is no Wakeup event. The only guarantee is that if the instruction does not complete in finite time in the absence of a Wakeup event, the trap will be taken.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Traps EL0 accesses to the CTR_EL0 to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, from AArch64 state only, reported using an ESR_ELx.EC value of 0x18.
UCT | Meaning |
---|---|
0b0 |
Accesses to the CTR_EL0 from EL0 using AArch64 are trapped. |
0b1 |
This control does not cause any instructions to be trapped. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Traps EL0 execution of DC ZVA instructions to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, from AArch64 state only, reported using an ESR_ELx.EC value of 0x18.
If FEAT_MTE is implemented, this trap also applies to DC GVA and DC GZVA.
DZE | Meaning |
---|---|
0b0 | Any attempt to execute an instruction that this trap applies to at EL0 using AArch64 is trapped. Reading DCZID_EL0.DZP from EL0 returns 1, indicating that the instructions this trap applies to are not supported. |
0b1 |
This control does not cause any instructions to be trapped. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Controls enabling of pointer authentication of instruction addresses, using the APDBKey_EL1 key, in the EL1&0 translation regime.
EnDB | Meaning |
---|---|
0b0 |
Pointer authentication of data addresses, using the APDBKey_EL1 key, is not enabled. |
0b1 |
Pointer authentication of data addresses, using the APDBKey_EL1 key, is enabled. |
This field controls the behavior of the AddPACDB and AuthDB pseudocode functions. Specifically, when the field is 1, AddPACDB returns a copy of a pointer to which a pointer authentication code has been added, and AuthDB returns an authenticated copy of a pointer. When the field is 0, both of these functions are NOP.
The reset behavior of this field is:
Reserved, RES0.
Stage 1 instruction access Cacheability control, for accesses at EL0 and EL1:
I | Meaning |
---|---|
0b0 | All instruction access to Stage 1 Normal memory from EL0 and EL1 are Stage 1 Non-cacheable. If the value of SCTLR_EL1.M is 0, instruction accesses from stage 1 of the EL1&0 translation regime are to Normal, Outer Shareable, Inner Non-cacheable, Outer Non-cacheable memory. |
0b1 | This control has no effect on the Stage 1 Cacheability of instruction access to Stage 1 Normal memory from EL0 and EL1. If the value of SCTLR_EL1.M is 0, instruction accesses from stage 1 of the EL1&0 translation regime are to Normal, Outer Shareable, Inner Write-Through, Outer Write-Through memory. |
When the value of the HCR_EL2.DC bit is 1, then instruction access to Normal memory from EL0 and EL1 are Cacheable regardless of the value of the SCTLR_EL1.I bit.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on the PE.
The reset behavior of this field is:
Exception Exit is Context Synchronizing.
EOS | Meaning |
---|---|
0b0 |
An exception return from EL1 is not a context synchronizing event |
0b1 |
An exception return from EL1 is a context synchronizing event |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
If SCTLR_EL1.EOS is set to 0b0:
The following are not affected by the value of SCTLR_EL1.EOS:
The reset behavior of this field is:
Reserved, RES1.
Enable EL0 access to the following System instructions:
EnRCTX | Meaning |
---|---|
0b0 |
EL0 access to these instructions is disabled, and these instructions are trapped to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1. |
0b1 |
EL0 access to these instructions is enabled. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
User Mask Access. Traps EL0 execution of MSR and MRS instructions that access the PSTATE.{D, A, I, F} masks to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, from AArch64 state only, reported using an ESR_ELx.EC value of 0x18.
UMA | Meaning |
---|---|
0b0 |
Any attempt at EL0 using AArch64 to execute an MRS, MSR(register), or MSR(immediate) instruction that accesses the DAIF is trapped. |
0b1 |
This control does not cause any instructions to be trapped. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
SETEND instruction disable. Disables SETEND instructions at EL0 using AArch32.
SED | Meaning |
---|---|
0b0 |
SETEND instruction execution is enabled at EL0 using AArch32. |
0b1 |
SETEND instructions are UNDEFINED at EL0 using AArch32 and any attempt at EL0 to access a SETEND instruction generates an exception to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1, reported using an ESR_ELx.EC value of 0x00. |
If the implementation does not support mixed-endian operation at any Exception level, this bit is RES1.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES1.
IT Disable. Disables some uses of IT instructions at EL0 using AArch32.
ITD | Meaning |
---|---|
0b0 |
All IT instruction functionality is enabled at EL0 using AArch32. |
0b1 | Any attempt at EL0 using AArch32 to execute any of the following is UNDEFINED and generates an exception, reported using an ESR_ELx.EC value of 0x00, to EL1 or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1:
These instructions are always UNDEFINED, regardless of whether they would pass or fail the condition code check that applies to them as a result of being in an IT block. It is IMPLEMENTATION DEFINED whether the IT instruction is treated as:
This means that, for the situations that are UNDEFINED, either the second 16-bit instruction or the 32-bit instruction is UNDEFINED. An implementation might vary dynamically as to whether IT is treated as a 16-bit instruction or the first half of a 32-bit instruction. |
If an instruction in an active IT block that would be disabled by this field sets this field to 1 then behavior is CONSTRAINED UNPREDICTABLE. For more information, see 'Changes to an ITD control by an instruction in an IT block'.
ITD is optional, but if it is implemented in the SCTLR_EL1 then it must also be implemented in the SCTLR_EL2, HSCTLR, and SCTLR.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
When an implementation does not implement ITD, access to this field is RAZ/WI.
Reserved, RES1.
Non-aligned access. This bit controls generation of Alignment faults at EL1 and EL0 under certain conditions.
The following instructions generate an Alignment fault if all bytes being accessed are not within a single 16-byte quantity, aligned to 16 bytes for access:
LDAPR, LDAPRH, LDAPUR, LDAPURH, LDAPURSH, LDAPURSW, LDAR, LDARH, LDLAR, LDLARH.
STLLR, STLLRH, STLR, STLRH, STLUR, and STLURH.
If FEAT_LRCPC3 is implemented, the following instructions generate an Alignment fault if all bytes being accessed for a single register are not within a single 16-byte quantity, aligned to 16 bytes for access:
LDIAPP, STILP, the post index versions of LDAPR and the pre index versions of STLR.
If Advanced SIMD and floating-point instructions are implemented, LDAPUR (SIMD&FP), LDAP1 (SIMD&FP), STLUR (SIMD&FP), and STL1 (SIMD&FP).
nAA | Meaning |
---|---|
0b0 |
Unaligned accesses by the specified instructions generate an Alignment fault. |
0b1 |
This control does not generate Alignment faults. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
Reserved, RES0.
System instruction memory barrier enable. Enables accesses to the DMB, DSB, and ISB System instructions in the (coproc==0b1111) encoding space from EL0:
CP15BEN | Meaning |
---|---|
0b0 |
EL0 using AArch32: EL0 execution of the CP15DMB, CP15DSB, and CP15ISB instructions is UNDEFINED and generates an exception to EL1, or to EL2 when it is implemented and enabled for the current Security state and HCR_EL2.TGE is 1. The exception is reported using an ESR_ELx.EC value of 0x00. |
0b1 |
EL0 using AArch32: EL0 execution of the CP15DMB, CP15DSB, and CP15ISB instructions is enabled. |
CP15BEN is optional, but if it is implemented in the SCTLR_EL1 then it must also be implemented in the SCTLR_EL2, HSCTLR, and SCTLR.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
When an implementation does not implement CP15BEN, access to this field is RAO/WI.
Reserved, RES0.
SP Alignment check enable for EL0. When set to 1, if a load or store instruction executed at EL0 uses the SP as the base address and the SP is not aligned to a 16-byte boundary, then an SP alignment fault exception is generated. For more information, see 'SP alignment checking'.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
SP Alignment check enable. When set to 1, if a load or store instruction executed at EL1 uses the SP as the base address and the SP is not aligned to a 16-byte boundary, then an SP alignment fault exception is generated. For more information, see 'SP alignment checking'.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on the PE.
The reset behavior of this field is:
Stage 1 Cacheability control, for data accesses.
C | Meaning |
---|---|
0b0 |
All data access to Stage 1 Normal memory from EL0 and EL1, and all Normal memory accesses from unified cache to the EL1&0 Stage 1 translation tables, are treated as Stage 1 Non-cacheable. |
0b1 | This control has no effect on the Stage 1 Cacheability of:
|
When the Effective value of the HCR_EL2.DC bit in the current Security state is 1, the PE ignores SCTLR_EL1.C. This means that EL0 and EL1 data accesses to Normal memory are Cacheable.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on the PE.
The reset behavior of this field is:
Alignment check enable. This is the enable bit for Alignment fault checking at EL1 and EL0.
A | Meaning |
---|---|
0b0 | Alignment fault checking is disabled when executing at EL1 or EL0. Alignment checks on some instructions are not disabled by this control. For more information, see 'Alignment of data accesses'. |
0b1 | Alignment fault checking is enabled when executing at EL1 or EL0. All instructions that load or store one or more registers have an alignment check that the address being accessed is aligned to the size of the data element(s) being accessed. If this check fails it causes an Alignment fault, which is taken as a Data Abort exception. |
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on execution at EL0.
The reset behavior of this field is:
MMU enable for EL1&0 stage 1 address translation.
M | Meaning |
---|---|
0b0 | EL1&0 stage 1 address translation disabled. See the SCTLR_EL1.I field for the behavior of instruction accesses to Normal memory. |
0b1 |
EL1&0 stage 1 address translation enabled. |
If the Effective value of HCR_EL2.{DC, TGE} in the current Security state is not {0, 0} then the PE behaves as if the value of the SCTLR_EL1.M field is 0 for all purposes other than returning the value of a direct read of the field.
When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit has no effect on the PE.
The reset behavior of this field is:
When the Effective value of HCR_EL2.E2H is 1, without explicit synchronization, access from EL3 using the mnemonic SCTLR_EL1 or SCTLR_EL12 are not guaranteed to be ordered with respect to accesses using the other mnemonic.
Accesses to this register use the following encodings in the System register encoding space:
MRS <Xt>, SCTLR_EL1
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0001 | 0b0000 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TRVM == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3.FGTEn == '1') && HFGRTR_EL2.SCTLR_EL1 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EffectiveHCR_EL2_NVx() == '111' then X[t, 64] = NVMem[0x110]; else X[t, 64] = SCTLR_EL1; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then X[t, 64] = SCTLR_EL2; else X[t, 64] = SCTLR_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = SCTLR_EL1;
MSR SCTLR_EL1, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b0001 | 0b0000 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TVM == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT) && (!HaveEL(EL3) || SCR_EL3.FGTEn == '1') && HFGWTR_EL2.SCTLR_EL1 == '1' then AArch64.SystemAccessTrap(EL2, 0x18); elsif EffectiveHCR_EL2_NVx() == '111' then NVMem[0x110] = X[t, 64]; else SCTLR_EL1 = X[t, 64]; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then SCTLR_EL2 = X[t, 64]; else SCTLR_EL1 = X[t, 64]; elsif PSTATE.EL == EL3 then SCTLR_EL1 = X[t, 64];
MRS <Xt>, SCTLR_EL12
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b101 | 0b0001 | 0b0000 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() == '101' then X[t, 64] = NVMem[0x110]; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then X[t, 64] = SCTLR_EL1; else UNDEFINED; elsif PSTATE.EL == EL3 then if ELIsInHost(EL2) then X[t, 64] = SCTLR_EL1; else UNDEFINED;
MSR SCTLR_EL12, <Xt>
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b101 | 0b0001 | 0b0000 | 0b000 |
if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() == '101' then NVMem[0x110] = X[t, 64]; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then if ELIsInHost(EL2) then SCTLR_EL1 = X[t, 64]; else UNDEFINED; elsif PSTATE.EL == EL3 then if ELIsInHost(EL2) then SCTLR_EL1 = X[t, 64]; else UNDEFINED;