SCTLR_EL2, System Control Register (EL2)

The SCTLR_EL2 characteristics are:

Purpose

Provides top-level control of the system, including its memory system, at EL2.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, these controls apply also to execution at EL0.

Configuration

AArch64 System register SCTLR_EL2 bits [31:0] are architecturally mapped to AArch32 System register HSCTLR[31:0].

If EL2 is not implemented, this register is RES0 from EL3.

This register has no effect if EL2 is not enabled in the current Security state.

Attributes

SCTLR_EL2 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
TIDCPSPINTMASKNMIEnTP2TCSOTCSO0EPANEnALSEnAS0EnASRTMETME0TMTTMT0TWEDELTWEDEnDSSBSATAATA0TCFTCF0ITFSBBTBT0EnFPMMSCEnCMOW
EnIAEnIBLSMAOEnTLSMDEnDAUCIEEE0ESPANEISIESBTSCXTWXNnTWERES0nTWIUCTDZEEnDBIEOSEnRCTXRES0SEDITDnAACP15BENSA0SACAM

TIDCP, bit [63]
When FEAT_TIDCP1 is implemented and the Effective value of HCR_EL2.E2H is 1:

Trap IMPLEMENTATION DEFINED functionality. Traps EL0 accesses to the encodings reserved for IMPLEMENTATION DEFINED functionality to EL2.

TIDCPMeaning
0b0

No instructions accessing the System register or System instruction spaces are trapped by this mechanism.

0b1

If HCR_EL2.TGE==0, no instructions accessing the System register or System instruction spaces are trapped by this mechanism.

If HCR_EL2.TGE==1, instructions accessing the following System register or System instruction spaces are trapped to EL2 by this mechanism:

  • In AArch64 state, EL0 access to the encodings in the following reserved encoding spaces are trapped:

    • IMPLEMENTATION DEFINED System instructions, which are accessed using SYS and SYSL, with CRn == {11, 15}, and are reported using EC syndrome 0x18.

    • IMPLEMENTATION DEFINED System instructions, which are accessed using SYSP, with CRn == {11, 15}, and are reported using EC syndrome 0x14.

    • IMPLEMENTATION DEFINED System registers, which are accessed using MRS and MSR with the S3_<op1>_<Cn>_<Cm>_<op2> register name, and are reported using EC syndrome 0x18.

    • IMPLEMENTATION DEFINED System registers, which are accessed using MRRS and MSRR with the S3_<op1>_<Cn>_<Cm>_<op2> register name, and are reported using EC syndrome 0x14.

  • In AArch32 state, EL0 MCR and MRC accesses to the following encodings are trapped and reported using EC syndrome 0x03:

    • All coproc==p15, CRn==c9, opc1 == {0-7}, CRm == {c0-c2, c5-c8}, opc2 == {0-7}.

    • All coproc==p15, CRn==c10, opc1 =={0-7}, CRm == {c0, c1, c4, c8}, opc2 == {0-7}.

    • All coproc==p15, CRn==c11, opc1=={0-7}, CRm == {c0-c8, c15}, opc2 == {0-7}.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SPINTMASK, bit [62]
When FEAT_NMI is implemented:

SP Interrupt Mask enable. When SCTLR_EL2.NMI is 1, controls whether PSTATE.SP acts as an interrupt mask, and controls the value of PSTATE.ALLINT on taking an exception to EL2.

SPINTMASKMeaning
0b0

Does not cause PSTATE.SP to mask interrupts.

PSTATE.ALLINT is set to 1 on taking an exception to EL2.

0b1

When PSTATE.SP is 1 and execution is at EL2, an IRQ or FIQ interrupt that is targeted to EL2 is masked regardless of any denotation of Superpriority.

PSTATE.ALLINT is set to 0 on taking an exception to EL2.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

NMI, bit [61]
When FEAT_NMI is implemented:

Non-maskable Interrupt enable.

NMIMeaning
0b0

This control does not affect interrupt masking behavior.

0b1

This control enables all of the following:

  • The use of the PSTATE.ALLINT interrupt mask.

  • IRQ and FIQ interrupts to have Superpriority as an additional attribute.

  • PSTATE.SP to be used as an interrupt mask.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnTP2, bit [60]
When FEAT_SME is implemented and the Effective value of HCR_EL2.E2H is 1:

Traps instructions executed at EL0 that access TPIDR2_EL0 to EL2 when EL2 is implemented and enabled for the current Security state. The exception is reported using ESR_ELx.EC value 0x18.

EnTP2Meaning
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 HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCSO, bit [59]
When FEAT_MTE_STORE_ONLY is implemented:

Tag Checking Store Only.

TCSOMeaning
0b0

This field has no effect on Tag checking.

0b1

Load instructions executed in EL2 are Tag Unchecked.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCSO0, bit [58]
When FEAT_MTE_STORE_ONLY is implemented and the Effective value of HCR_EL2.E2H is 1:

Tag Checking Store Only in EL0.

TCSO0Meaning
0b0

This field has no effect on Tag checking.

0b1

Load instructions executed in EL0 are Tag Unchecked.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EPAN, bit [57]
When FEAT_PAN3 is implemented and the Effective value of HCR_EL2.E2H is 1:

Enhanced Privileged Access Never. When PSTATE.PAN is 1, determines whether an EL2 data access to a page with EL0 instruction access permission generates a Permission fault as a result of the Privileged Access Never mechanism.

EPANMeaning
0b0

No additional Permission faults are generated by this mechanism.

0b1

An EL2 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.

Note

The value of HCR_EL2.TGE does not change the behavior of this field.

This bit is permitted to be cached in a TLB.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnALS, bit [56]
When FEAT_LS64 is implemented and the Effective value of HCR_EL2.E2H is 1:

Traps execution of an LD64B or ST64B instruction at EL0 to EL2.

EnALSMeaning
0b0

Execution of an LD64B or ST64B instruction at EL0 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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:


Otherwise:

Reserved, RES0.

EnAS0, bit [55]
When FEAT_LS64_ACCDATA is implemented and the Effective value of HCR_EL2.E2H is 1:

Traps execution of an ST64BV0 instruction at EL0 to EL2.

EnAS0Meaning
0b0

Execution of an ST64BV0 instruction at EL0 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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:


Otherwise:

Reserved, RES0.

EnASR, bit [54]
When FEAT_LS64_V is implemented and the Effective value of HCR_EL2.E2H is 1:

Traps execution of an ST64BV instruction at EL0 to EL2.

EnASRMeaning
0b0

Execution of an ST64BV instruction at EL0 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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:


Otherwise:

Reserved, RES0.

TME, bit [53]
When FEAT_TME is implemented:

Enables the Transactional Memory Extension at EL2.

TMEMeaning
0b0

Any attempt to execute a TSTART instruction at EL2 is trapped, unless HCR_EL2.TME or SCR_EL3.TME causes TSTART instructions to be UNDEFINED at EL2.

0b1

This control does not cause any TSTART instruction to be trapped.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TME0, bit [52]
When FEAT_TME is implemented and the Effective value of HCR_EL2.E2H is 1:

Enables the Transactional Memory Extension at EL0.

TME0Meaning
0b0

Any attempt to execute a TSTART instruction at EL0 is trapped to EL2, 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 HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TMT, bit [51]
When FEAT_TME is implemented:

Forces a trivial implementation of the Transactional Memory Extension at EL2.

TMTMeaning
0b0

This control does not cause any TSTART instruction to fail.

0b1

When the TSTART instruction is executed at EL2, the transaction fails with a TRIVIAL failure cause.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TMT0, bit [50]
When FEAT_TME is implemented and the Effective value of HCR_EL2.E2H is 1:

Forces a trivial implementation of the Transactional Memory Extension at EL0.

TMT0Meaning
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 HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TWEDEL, bits [49:46]
When FEAT_TWED is implemented and the Effective value of HCR_EL2.E2H is 1:

TWE Delay. A 4-bit unsigned number that, when SCTLR_EL2.TWEDEn is 1, encodes the minimum delay in taking a trap of WFE caused by SCTLR_EL2.nTWE as 2(TWEDEL + 8) cycles.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TWEDEn, bit [45]
When FEAT_TWED is implemented and the Effective value of HCR_EL2.E2H is 1:

TWE Delay Enable. Enables a configurable delayed trap of the WFE instruction caused by SCTLR_EL2.nTWE.

TWEDEnMeaning
0b0

The delay for taking a WFE trap is IMPLEMENTATION DEFINED.

0b1

The delay for taking a WFE trap is at least the number of cycles defined in SCTLR_EL2.TWEDEL.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

DSSBS, bit [44]
When FEAT_SSBS is implemented:

Default PSTATE.SSBS value on exception entry.

DSSBSMeaning
0b0

PSTATE.SSBS is set to 0 on an exception to EL2.

0b1

PSTATE.SSBS is set to 1 on an exception to EL2.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ATA, bit [43]
When FEAT_MTE2 is implemented:

Allocation Tag Access in EL2.

When SCR_EL3.ATA is 1, controls access to Allocation Tags and Tag Check operations in EL2.

ATAMeaning
0b0

Access to Allocation Tags is prevented at EL2.

Memory accesses at EL2 are not subject to a Tag Check operation.

0b1

This control does not prevent access to Allocation Tags at EL2.

Tag Checked memory accesses at EL2 are subject to a Tag Check operation.

The Tag Check operation depends on the type of tag at the memory being accessed:

  • For Allocation Tagged memory, an Allocation Tag Check operation.
  • If FEAT_MTE_CANONICAL_TAGS is implemented, for Canonically Tagged memory, a Canonical Tag Check operation.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ATA0, bit [42]
When FEAT_MTE2 is implemented and the Effective value of HCR_EL2.E2H is 1:

Allocation Tag Access in EL0.

When SCR_EL3.ATA is 1, controls access to Allocation Tags and Tag Check operations in EL0.

ATA0Meaning
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:

  • For Allocation Tagged memory, an Allocation Tag Check operation.
  • If FEAT_MTE_CANONICAL_TAGS is implemented, for Canonically Tagged memory, a Canonical Tag Check operation.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

Note

Software may change this control bit on a context switch.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCF, bits [41:40]
When FEAT_MTE2 is implemented:

Tag Check Fault in EL2. Controls the effect of Tag Check Faults due to Loads and Stores in EL2.

TCFMeaningApplies 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:


Otherwise:

Reserved, RES0.

TCF0, bits [39:38]
When FEAT_MTE2 is implemented and the Effective value of HCR_EL2.E2H is 1:

Tag Check Fault in EL0. Controls the effect of Tag Check Faults due to Loads and Stores in EL0.

TCF0MeaningApplies 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 HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

If FEAT_MTE3 is not implemented, the value 0b11 is reserved.

Note

Software may change this control bit on a context switch.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ITFSB, bit [37]
When FEAT_MTE2 is implemented:

When synchronous exceptions are not being generated by Tag Check Faults, this field controls whether on exception entry into EL2, all Tag Check Faults due to instructions executed before exception entry, that are reported asynchronously, are synchronized into TFSRE0_EL1, TFSR_EL1, and TFSR_EL2 registers.

ITFSBMeaning
0b0

Tag Check Faults are not synchronized on entry to EL2.

0b1

Tag Check Faults are synchronized on entry to EL2.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

BT, bit [36]
When FEAT_BTI is implemented:

PAC Branch Type compatibility at EL2.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, this bit is named BT1.

BTMeaning
0b0

When the PE is executing at EL2, PACIASP and PACIBSP are compatible with PSTATE.BTYPE == 0b11.

0b1

When the PE is executing at EL2, PACIASP and PACIBSP are not compatible with PSTATE.BTYPE == 0b11.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

BT0, bit [35]
When FEAT_BTI is implemented and the Effective value of HCR_EL2.E2H is 1:

PAC Branch Type compatibility at EL0.

BT0Meaning
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.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnFPM, bit [34]
When FEAT_FPMR is implemented and the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}:

Enables the following accesses to FPMR from EL0 to EL2:

EnFPMMeaning
0b0

EL0 accesses to FPMR are disabled and trapped to 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.

If EL2 is not implemented or is disabled in the current Security state, the Effective value of this field is 0b1.

When HCR_EL2.TGE is 0, this field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

MSCEn, bit [33]
When FEAT_MOPS is implemented and the Effective value of HCR_EL2.E2H is 1:

Memory Copy and Memory Set instructions Enable. Enables execution of the Memory Copy and Memory Set instructions at EL0.

MSCEnMeaning
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.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

When FEAT_MOPS is implemented and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, the Effective value of this bit is 0b1.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

CMOW, bit [32]
When FEAT_CMOW is implemented and the Effective value of HCR_EL2.E2H is 1:

Controls cache maintenance instruction permission for the following instructions executed at EL0.

CMOWMeaning
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_EL2.UCI==1, these instructions executed at EL0 with stage 1 read permission, but without stage 1 write permission, generate a stage 1 permission fault.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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:


Otherwise:

Reserved, RES0.

EnIA, bit [31]
When FEAT_PAuth is implemented:

Controls enabling of pointer authentication of instruction addresses, using the APIAKey_EL1 key, in the EL2 or EL2&0 translation regime.

EnIAMeaning
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.

Note

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:


Otherwise:

Reserved, RES0.

EnIB, bit [30]
When FEAT_PAuth is implemented:

Controls enabling of pointer authentication of instruction addresses, using the APIBKey_EL1 key, in the EL2 or EL2&0 translation regime.

EnIBMeaning
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.

Note

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:


Otherwise:

Reserved, RES0.

LSMAOE, bit [29]
When FEAT_LSMAOC is implemented and the Effective value of HCR_EL2.E2H is 1:

Load Multiple and Store Multiple Atomicity and Ordering Enable.

LSMAOEMeaning
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.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

This bit is permitted to be cached in a TLB.

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

nTLSMD, bit [28]
When FEAT_LSMAOC is implemented and the Effective value of HCR_EL2.E2H is 1:

No Trap Load Multiple and Store Multiple to Device-nGRE/Device-nGnRE/Device-nGnRnE memory.

nTLSMDMeaning
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.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

This bit is permitted to be cached in a TLB.

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

EnDA, bit [27]
When FEAT_PAuth is implemented:

Controls enabling of pointer authentication of instruction addresses, using the APDAKey_EL1 key, in the EL2 or EL2&0 translation regime.

EnDAMeaning
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.

Note

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:


Otherwise:

Reserved, RES0.

UCI, bit [26]
When the Effective value of HCR_EL2.E2H is 1:

Traps execution of cache maintenance instructions at EL0 to EL2, from AArch64 state only. 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.

UCIMeaning
0b0

Any attempt to execute an instruction that this trap applies to at EL0 using AArch64 is trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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:


Otherwise:

Reserved, RES0.

EE, bit [25]

Endianness of data accesses at EL2, stage 1 translation table walks in the EL2 or EL2&0 translation regime, and stage 2 translation table walks in the EL1&0 translation regime.

EEMeaning
0b0

Explicit data accesses at EL2, stage 1 translation table walks in the EL2 or EL2&0 translation regime, and stage 2 translation table walks in the EL1&0 translation regime are little-endian.

0b1

Explicit data accesses at EL2, stage 1 translation table walks in the EL2 or EL2&0 translation regime, and stage 2 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.

The reset behavior of this field is:

E0E, bit [24]
When the Effective value of HCR_EL2.E2H is 1:

Endianness of data accesses at EL0.

E0EMeaning
0b0

Explicit data accesses at EL0 are little-endian.

0b1

Explicit data accesses at EL0 are big-endian.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SPAN, bit [23]
When the Effective value of HCR_EL2.E2H is 1:

Set Privileged Access Never, on taking an exception to EL2.

SPANMeaning
0b0

PSTATE.PAN is set to 1 on taking an exception to EL2.

0b1

The value of PSTATE.PAN is left unchanged on taking an exception to EL2.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

EIS, bit [22]
When FEAT_ExS is implemented:

Exception entry is a context synchronization event.

EISMeaning
0b0

The taking of an exception to EL2 is not a context synchronization event.

0b1

The taking of an exception to EL2 is a context synchronization event.

If SCTLR_EL2.EIS is set to 0b0:

The following are not affected by the value of SCTLR_EL2.EIS:

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

IESB, bit [21]
When FEAT_IESB is implemented:

Implicit Error Synchronization event enable.

IESBMeaning
0b0

Disabled.

0b1

An implicit error synchronization event is added:

  • At each exception taken to EL2.
  • Before the operational pseudocode of each ERET instruction executed at EL2.

If FEAT_DoubleFault2 is implemented, the PE is in Non-debug state, and the Effective value of SCTLR2_EL2.NMEA is 1, then SCTLR_EL2.IESB is ignored and the PE behaves as if SCTLR_EL2.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 EL2 and before each DRPS instruction executed at EL2, in addition to the other cases where it is added.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TSCXT, bit [20]
When (FEAT_CSV2_2 is implemented or FEAT_CSV2_1p2 is implemented) and the Effective value of HCR_EL2.E2H is 1:

Trap EL0 Access to the SCXTNUM_EL0 register, when EL0 is using AArch64.

TSCXTMeaning
0b0

EL0 access to SCXTNUM_EL0 is not disabled by this mechanism.

0b1

EL0 access to SCXTNUM_EL0 is disabled, causing an exception to EL2, and the SCXTNUM_EL0 value is treated as 0.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


When FEAT_CSV2_2 is not implemented, FEAT_CSV2_1p2 is not implemented and the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}:

Reserved, RES1.


Otherwise:

Reserved, RES0.

WXN, bit [19]

Write permission implies XN (Execute-never). For the EL2 or EL2&0 translation regime, this bit can force all memory regions that are writable to be treated as XN.

WXNMeaning
0b0

This control has no effect on memory access permissions.

0b1

Any region that is writable in the EL2 or EL2&0 translation regime is forced to XN for accesses from software executing at EL2.

This bit applies only when SCTLR_EL2.M bit is set.

The WXN bit is permitted to be cached in a TLB.

The reset behavior of this field is:

nTWE, bit [18]
When the Effective value of HCR_EL2.E2H is 1:

Traps execution of WFE instructions at EL0 to EL2, from both Execution states.

When FEAT_WFxT is implemented, this trap also applies to the WFET instruction.

nTWEMeaning
0b0

Any attempt to execute a WFE instruction at EL0 is trapped to EL2, 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.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

In AArch32 state, the attempted execution of a conditional WFE instruction is only trapped if the instruction passes its condition code check.

Note

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.

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

Bit [17]

Reserved, RES0.

nTWI, bit [16]
When the Effective value of HCR_EL2.E2H is 1:

Traps execution of WFI instructions at EL0 to EL2, from both Execution states.

When FEAT_WFxT is implemented, this trap also applies to the WFIT instruction.

nTWIMeaning
0b0

Any attempt to execute a WFI instruction at EL0 is trapped EL2, 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.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

In AArch32 state, the attempted execution of a conditional WFI instruction is only trapped if the instruction passes its condition code check.

Note

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.

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

UCT, bit [15]
When the Effective value of HCR_EL2.E2H is 1:

Traps EL0 accesses to the CTR_EL0 to EL2, from AArch64 state only.

UCTMeaning
0b0

Accesses to the CTR_EL0 from EL0 using AArch64 are trapped to EL2.

0b1

This control does not cause any instructions to be trapped.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

DZE, bit [14]
When the Effective value of HCR_EL2.E2H is 1:

Traps execution of DC ZVA instructions at EL0 to EL2, from AArch64 state only.

If FEAT_MTE is implemented, this trap also applies to DC GVA and DC GZVA.

DZEMeaning
0b0

Any attempt to execute an instruction that this trap applies to at EL0 using AArch64 is trapped to EL2. Reading DCZID_EL0.DZP from EL0 returns 1, indicating that the instructions that this trap applies to are not supported.

0b1

This control does not cause any instructions to be trapped.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnDB, bit [13]
When FEAT_PAuth is implemented:

Controls enabling of pointer authentication of instruction addresses, using the APDBKey_EL1 key, in the EL2 or EL2&0 translation regime.

EnDBMeaning
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.

Note

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:


Otherwise:

Reserved, RES0.

I, bit [12]

Instruction access Cacheability control, for accesses at EL2 and, when the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, EL0.

IMeaning
0b0

All instruction accesses to Normal memory from EL2 are Non-cacheable for all levels of instruction and unified cache.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, all instruction accesses to Normal memory from EL0 are Non-cacheable for all levels of instruction and unified cache.

If SCTLR_EL2.M is 0, instruction accesses from stage 1 of the EL2 or EL2&0 translation regime are to Normal, Outer Shareable, Inner Non-cacheable, Outer Non-cacheable memory.

0b1

This control has no effect on the Cacheability of instruction access to Normal memory from EL2 and, when the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, instruction access to Normal memory from EL0.

If the value of SCTLR_EL2.M is 0, instruction accesses from stage 1 of the EL2 or EL2&0 translation regime are to Normal, Outer Shareable, Inner Write-Through, Outer Write-Through memory.

This bit has no effect on the EL3 translation regime.

When EL2 is disabled in the current Security state or the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, this bit has no effect on the EL1&0 translation regime.

The reset behavior of this field is:

EOS, bit [11]
When FEAT_ExS is implemented:

Exception exit is a context synchronization event.

EOSMeaning
0b0

An exception return from EL2 is not a context synchronization event.

0b1

An exception return from EL2 is a context synchronization event.

If SCTLR_EL2.EOS is set to 0b0:

The following are not affected by the value of SCTLR_EL2.EOS:

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

EnRCTX, bit [10]
When FEAT_SPECRES is implemented and the Effective value of HCR_EL2.E2H is 1:

Enable EL0 access to the following System instructions:

EnRCTXMeaning
0b0

EL0 access to these instructions is disabled, and these instructions are trapped to EL1.

0b1

EL0 access to these instructions is enabled.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [9]

Reserved, RES0.

SED, bit [8]
When EL0 is capable of using AArch32 and the Effective value of HCR_EL2.E2H is 1:

SETEND instruction disable. Disables SETEND instructions at EL0 using AArch32.

SEDMeaning
0b0

SETEND instruction execution is enabled at EL0 using AArch32.

0b1

SETEND instructions are UNDEFINED at EL0 using AArch32.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

If the implementation does not support mixed-endian operation at any Exception level, this bit is RES1.

The reset behavior of this field is:


When EL0 can only use AArch64 and the Effective value of HCR_EL2.E2H is 1:

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

Access to this field is RES1 .


Otherwise:

Reserved, RES0.

ITD, bit [7]
When EL0 is capable of using AArch32 and the Effective value of HCR_EL2.E2H is 1:

IT Disable. Disables some uses of IT instructions at EL0 using AArch32.

ITDMeaning
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:

  • All encodings of the IT instruction with hw1[3:0]!=1000.
  • All encodings of the subsequent instruction with the following values for hw1:
    • 0b11xxxxxxxxxxxxxx: All 32-bit instructions, and the 16-bit instructions B, UDF, SVC, LDM, and STM.
    • 0b1011xxxxxxxxxxxx: All instructions in 'Miscellaneous 16-bit instructions'.
    • 0b10100xxxxxxxxxxx: ADD Rd, PC, #imm
    • 0b01001xxxxxxxxxxx: LDR Rd, [PC, #imm]
    • 0b0100x1xxx1111xxx: ADD Rdn, PC; CMP Rn, PC; MOV Rd, PC; BX PC; BLX PC.
    • 0b010001xx1xxxx111: ADD PC, Rm; CMP PC, Rm; MOV PC, Rm. This pattern also covers UNPREDICTABLE cases with BLX Rn.

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:

  • A 16-bit instruction, that can only be followed by another 16-bit instruction.
  • The first half of a 32-bit instruction.

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 whether IT is treated as a 16-bit instruction or the first half of a 32-bit instruction.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

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_EL2 then it must also be implemented in the SCTLR_EL1, HSCTLR, and SCTLR.

The reset behavior of this field is:

When an implementation does not implement ITD, access to this field is RAZ/WI.


When EL0 can only use AArch64 and the Effective value of HCR_EL2.E2H is not 1:

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.


Otherwise:

Reserved, RES0.

nAA, bit [6]
When FEAT_LSE2 is implemented:

Non-aligned access. This bit controls generation of Alignment faults under certain conditions at EL2, and, when the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, EL0.

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:

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:

nAAMeaning
0b0

Unaligned accesses by the specified instructions generate an Alignment fault.

0b1

Unaligned accesses by the specified instructions do not generate an Alignment fault.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

CP15BEN, bit [5]
When EL0 is capable of using AArch32 and the Effective value of HCR_EL2.E2H is 1:

System instruction memory barrier enable. Enables accesses to the DMB, DSB, and ISB System instructions in the (coproc==0b1111) encoding space from EL0:

CP15BENMeaning
0b0

EL0 using AArch32: EL0 execution of the CP15DMB, CP15DSB, and CP15ISB instructions is UNDEFINED.

0b1

EL0 using AArch32: EL0 execution of the CP15DMB, CP15DSB, and CP15ISB instructions is enabled.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

CP15BEN is optional, but if it is implemented in the SCTLR_EL2 then it must also be implemented in the SCTLR_EL1, HSCTLR, and SCTLR.

The reset behavior of this field is:


When EL0 can only use AArch64 and the Effective value of HCR_EL2.E2H is 1:

Access to this field is RES0 .


Otherwise:

Reserved, RES1.

SA0, bit [4]
When the Effective value of HCR_EL2.E2H is 1:

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'.

If HCR_EL2.TGE == 0b0, the field is IGNORED for all purposes other than direct reads and writes of the register.

The reset behavior of this field is:


Otherwise:

Reserved, RES1.

SA, bit [3]

SP Alignment check enable. When set to 1, if a load or store instruction executed at EL2 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'.

The reset behavior of this field is:

C, bit [2]

Data access Cacheability control, for accesses at EL2 and, when the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, EL0

CMeaning
0b0

The following are Non-cacheable for all levels of data and unified cache:

  • Data accesses to Normal memory from EL2.

  • When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, Normal memory accesses to the EL2 translation tables.

  • When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}:

    • Data accesses to Normal memory from EL0.
    • Normal memory accesses to the EL2&0 translation tables.
0b1

This control has no effect on the Cacheability of:

  • Data access to Normal memory from EL2.

  • When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, Normal memory accesses to the EL2 translation tables.

  • When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}:

    • Data accesses to Normal memory from EL0.
    • Normal memory accesses to the EL2&0 translation tables.

This bit has no effect on the EL3 translation regime.

When EL2 is disabled in the current Security state or the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, this bit has no effect on the EL1&0 translation regime.

The reset behavior of this field is:

A, bit [1]

Alignment check enable. This is the enable bit for Alignment fault checking at EL2 and, when the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, EL0.

AMeaning
0b0

Alignment fault checking is disabled when executing at EL2.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, alignment fault checking disabled when executing at 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 EL2.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, alignment fault checking enabled when executing at 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.

The reset behavior of this field is:

M, bit [0]

MMU enable for EL2 or EL2&0 stage 1 address translation.

MMeaning
0b0

When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, EL2 stage 1 address translation disabled.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, EL2&0 stage 1 address translation disabled.

See the SCTLR_EL2.I field for the behavior of instruction accesses to Normal memory.

0b1

When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, EL2 stage 1 address translation enabled.

When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, EL2&0 stage 1 address translation enabled.

The reset behavior of this field is:

Accessing SCTLR_EL2

When the Effective value of HCR_EL2.E2H is 1, without explicit synchronization, accesses from EL2 using the accessor name SCTLR_EL2 or SCTLR_EL1 are not guaranteed to be ordered with respect to accesses using the other accessor name.

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, SCTLR_EL2

op0op1CRnCRmop2
0b110b1000b00010b00000b000

if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then X[t, 64] = SCTLR_EL2; elsif PSTATE.EL == EL3 then X[t, 64] = SCTLR_EL2;

MSR SCTLR_EL2, <Xt>

op0op1CRnCRmop2
0b110b1000b00010b00000b000

if PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then SCTLR_EL2 = X[t, 64]; elsif PSTATE.EL == EL3 then SCTLR_EL2 = X[t, 64];

When FEAT_VHE is implemented

MRS <Xt>, SCTLR_EL1

op0op1CRnCRmop2
0b110b0000b00010b00000b000

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() IN {'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;

When FEAT_VHE is implemented

MSR SCTLR_EL1, <Xt>

op0op1CRnCRmop2
0b110b0000b00010b00000b000

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() IN {'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];


26/03/2024 09:49; 67c0ae5282a7629ba0ea0ba7267b43cd4f7939f6

Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.