SCTLRMASK_EL2, System Control Masking Register (EL2)

The SCTLRMASK_EL2 characteristics are:

Purpose

Mask register to prevent updates of fields in SCTLR_EL2 on writes.

Configuration

This register is present only when FEAT_SRMASK is implemented. Otherwise, direct accesses to SCTLRMASK_EL2 are UNDEFINED.

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

SCTLRMASK_EL2 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
TIDCPSPINTMASKNMIEnTP2TCSOTCSO0EPANEnALSEnAS0EnASRTMETME0TMTTMT0RES0TWEDELTWEDEnDSSBSATAATA0RES0TCFRES0TCF0ITFSBBTBT0EnFPMMSCEnCMOW
EnIAEnIBLSMAOEnTLSMDEnDAUCIEEE0ESPANEISIESBTSCXTWXNnTWERES0nTWIUCTDZEEnDBIEOSEnRCTXRES0SEDITDnAACP15BENSA0SACAM

TIDCP, bit [63]
When FEAT_TIDCP1 is implemented:

Mask bit for TIDCP.

TIDCPMeaning
0b0

SCTLR_EL2.TIDCP is writeable.

0b1

SCTLR_EL2.TIDCP is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SPINTMASK, bit [62]
When FEAT_NMI is implemented:

Mask bit for SPINTMASK.

SPINTMASKMeaning
0b0

SCTLR_EL2.SPINTMASK is writeable.

0b1

SCTLR_EL2.SPINTMASK is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

NMI, bit [61]
When FEAT_NMI is implemented:

Mask bit for NMI.

NMIMeaning
0b0

SCTLR_EL2.NMI is writeable.

0b1

SCTLR_EL2.NMI is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnTP2, bit [60]
When FEAT_SME is implemented:

Mask bit for EnTP2.

EnTP2Meaning
0b0

SCTLR_EL2.EnTP2 is writeable.

0b1

SCTLR_EL2.EnTP2 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCSO, bit [59]
When FEAT_MTE_STORE_ONLY is implemented:

Mask bit for TCSO.

TCSOMeaning
0b0

SCTLR_EL2.TCSO is writeable.

0b1

SCTLR_EL2.TCSO is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCSO0, bit [58]
When FEAT_MTE_STORE_ONLY is implemented:

Mask bit for TCSO0.

TCSO0Meaning
0b0

SCTLR_EL2.TCSO0 is writeable.

0b1

SCTLR_EL2.TCSO0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EPAN, bit [57]
When FEAT_PAN3 is implemented:

Mask bit for EPAN.

EPANMeaning
0b0

SCTLR_EL2.EPAN is writeable.

0b1

SCTLR_EL2.EPAN is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnALS, bit [56]
When FEAT_LS64 is implemented:

Mask bit for EnALS.

EnALSMeaning
0b0

SCTLR_EL2.EnALS is writeable.

0b1

SCTLR_EL2.EnALS is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnAS0, bit [55]
When FEAT_LS64_ACCDATA is implemented:

Mask bit for EnAS0.

EnAS0Meaning
0b0

SCTLR_EL2.EnAS0 is writeable.

0b1

SCTLR_EL2.EnAS0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnASR, bit [54]
When FEAT_LS64_V is implemented:

Mask bit for EnASR.

EnASRMeaning
0b0

SCTLR_EL2.EnASR is writeable.

0b1

SCTLR_EL2.EnASR is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TME, bit [53]
When FEAT_TME is implemented:

Mask bit for TME.

TMEMeaning
0b0

SCTLR_EL2.TME is writeable.

0b1

SCTLR_EL2.TME is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TME0, bit [52]
When FEAT_TME is implemented:

Mask bit for TME0.

TME0Meaning
0b0

SCTLR_EL2.TME0 is writeable.

0b1

SCTLR_EL2.TME0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TMT, bit [51]
When FEAT_TME is implemented:

Mask bit for TMT.

TMTMeaning
0b0

SCTLR_EL2.TMT is writeable.

0b1

SCTLR_EL2.TMT is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TMT0, bit [50]
When FEAT_TME is implemented:

Mask bit for TMT0.

TMT0Meaning
0b0

SCTLR_EL2.TMT0 is writeable.

0b1

SCTLR_EL2.TMT0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bits [49:47]

Reserved, RES0.

TWEDEL, bit [46]
When FEAT_TWED is implemented:

Mask bit for TWEDEL.

TWEDELMeaning
0b0

SCTLR_EL2.TWEDEL is writeable.

0b1

SCTLR_EL2.TWEDEL is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TWEDEn, bit [45]
When FEAT_TWED is implemented:

Mask bit for TWEDEn.

TWEDEnMeaning
0b0

SCTLR_EL2.TWEDEn is writeable.

0b1

SCTLR_EL2.TWEDEn is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

DSSBS, bit [44]
When FEAT_SSBS is implemented:

Mask bit for DSSBS.

DSSBSMeaning
0b0

SCTLR_EL2.DSSBS is writeable.

0b1

SCTLR_EL2.DSSBS is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ATA, bit [43]
When FEAT_MTE2 is implemented:

Mask bit for ATA.

ATAMeaning
0b0

SCTLR_EL2.ATA is writeable.

0b1

SCTLR_EL2.ATA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ATA0, bit [42]
When FEAT_MTE2 is implemented:

Mask bit for ATA0.

ATA0Meaning
0b0

SCTLR_EL2.ATA0 is writeable.

0b1

SCTLR_EL2.ATA0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [41]

Reserved, RES0.

TCF, bit [40]
When FEAT_MTE2 is implemented:

Mask bit for TCF.

TCFMeaning
0b0

SCTLR_EL2.TCF is writeable.

0b1

SCTLR_EL2.TCF is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [39]

Reserved, RES0.

TCF0, bit [38]
When FEAT_MTE2 is implemented:

Mask bit for TCF0.

TCF0Meaning
0b0

SCTLR_EL2.TCF0 is writeable.

0b1

SCTLR_EL2.TCF0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ITFSB, bit [37]
When FEAT_MTE_ASYNC is implemented:

Mask bit for ITFSB.

ITFSBMeaning
0b0

SCTLR_EL2.ITFSB is writeable.

0b1

SCTLR_EL2.ITFSB is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

BT, bit [36]
When FEAT_BTI is implemented:

Mask bit for BT.

BTMeaning
0b0

SCTLR_EL2.BT is writeable.

0b1

SCTLR_EL2.BT is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

BT0, bit [35]
When FEAT_BTI is implemented:

Mask bit for BT0.

BT0Meaning
0b0

SCTLR_EL2.BT0 is writeable.

0b1

SCTLR_EL2.BT0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnFPM, bit [34]
When FEAT_FPMR is implemented:

Mask bit for EnFPM.

EnFPMMeaning
0b0

SCTLR_EL2.EnFPM is writeable.

0b1

SCTLR_EL2.EnFPM is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

MSCEn, bit [33]
When FEAT_MOPS is implemented:

Mask bit for MSCEn.

MSCEnMeaning
0b0

SCTLR_EL2.MSCEn is writeable.

0b1

SCTLR_EL2.MSCEn is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

CMOW, bit [32]
When FEAT_CMOW is implemented:

Mask bit for CMOW.

CMOWMeaning
0b0

SCTLR_EL2.CMOW is writeable.

0b1

SCTLR_EL2.CMOW is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnIA, bit [31]
When FEAT_PAuth is implemented:

Mask bit for EnIA.

EnIAMeaning
0b0

SCTLR_EL2.EnIA is writeable.

0b1

SCTLR_EL2.EnIA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnIB, bit [30]
When FEAT_PAuth is implemented:

Mask bit for EnIB.

EnIBMeaning
0b0

SCTLR_EL2.EnIB is writeable.

0b1

SCTLR_EL2.EnIB is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

LSMAOE, bit [29]
When FEAT_LSMAOC is implemented:

Mask bit for LSMAOE.

LSMAOEMeaning
0b0

SCTLR_EL2.LSMAOE is writeable.

0b1

SCTLR_EL2.LSMAOE is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

nTLSMD, bit [28]
When FEAT_LSMAOC is implemented:

Mask bit for nTLSMD.

nTLSMDMeaning
0b0

SCTLR_EL2.nTLSMD is writeable.

0b1

SCTLR_EL2.nTLSMD is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnDA, bit [27]
When FEAT_PAuth is implemented:

Mask bit for EnDA.

EnDAMeaning
0b0

SCTLR_EL2.EnDA is writeable.

0b1

SCTLR_EL2.EnDA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

UCI, bit [26]

Mask bit for UCI.

UCIMeaning
0b0

SCTLR_EL2.UCI is writeable.

0b1

SCTLR_EL2.UCI is not writeable.

The reset behavior of this field is:

EE, bit [25]
When FEAT_MixedEnd is implemented:

Mask bit for EE.

EEMeaning
0b0

SCTLR_EL2.EE is writeable.

0b1

SCTLR_EL2.EE is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

E0E, bit [24]
When FEAT_MixedEndEL0 is implemented:

Mask bit for E0E.

E0EMeaning
0b0

SCTLR_EL2.E0E is writeable.

0b1

SCTLR_EL2.E0E is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SPAN, bit [23]

Mask bit for SPAN.

SPANMeaning
0b0

SCTLR_EL2.SPAN is writeable.

0b1

SCTLR_EL2.SPAN is not writeable.

The reset behavior of this field is:

EIS, bit [22]
When FEAT_ExS is implemented:

Mask bit for EIS.

EISMeaning
0b0

SCTLR_EL2.EIS is writeable.

0b1

SCTLR_EL2.EIS is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

IESB, bit [21]
When FEAT_IESB is implemented:

Mask bit for IESB.

IESBMeaning
0b0

SCTLR_EL2.IESB is writeable.

0b1

SCTLR_EL2.IESB is not writeable.

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:

Mask bit for TSCXT.

TSCXTMeaning
0b0

SCTLR_EL2.TSCXT is writeable.

0b1

SCTLR_EL2.TSCXT is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

WXN, bit [19]

Mask bit for WXN.

WXNMeaning
0b0

SCTLR_EL2.WXN is writeable.

0b1

SCTLR_EL2.WXN is not writeable.

The reset behavior of this field is:

nTWE, bit [18]

Mask bit for nTWE.

nTWEMeaning
0b0

SCTLR_EL2.nTWE is writeable.

0b1

SCTLR_EL2.nTWE is not writeable.

The reset behavior of this field is:

Bit [17]

Reserved, RES0.

nTWI, bit [16]

Mask bit for nTWI.

nTWIMeaning
0b0

SCTLR_EL2.nTWI is writeable.

0b1

SCTLR_EL2.nTWI is not writeable.

The reset behavior of this field is:

UCT, bit [15]

Mask bit for UCT.

UCTMeaning
0b0

SCTLR_EL2.UCT is writeable.

0b1

SCTLR_EL2.UCT is not writeable.

The reset behavior of this field is:

DZE, bit [14]

Mask bit for DZE.

DZEMeaning
0b0

SCTLR_EL2.DZE is writeable.

0b1

SCTLR_EL2.DZE is not writeable.

The reset behavior of this field is:

EnDB, bit [13]
When FEAT_PAuth is implemented:

Mask bit for EnDB.

EnDBMeaning
0b0

SCTLR_EL2.EnDB is writeable.

0b1

SCTLR_EL2.EnDB is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

I, bit [12]

Mask bit for I.

IMeaning
0b0

SCTLR_EL2.I is writeable.

0b1

SCTLR_EL2.I is not writeable.

The reset behavior of this field is:

EOS, bit [11]
When FEAT_ExS is implemented:

Mask bit for EOS.

EOSMeaning
0b0

SCTLR_EL2.EOS is writeable.

0b1

SCTLR_EL2.EOS is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EnRCTX, bit [10]
When FEAT_SPECRES is implemented:

Mask bit for EnRCTX.

EnRCTXMeaning
0b0

SCTLR_EL2.EnRCTX is writeable.

0b1

SCTLR_EL2.EnRCTX is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [9]

Reserved, RES0.

SED, bit [8]
When EL0 is capable of using AArch32:

Mask bit for SED.

SEDMeaning
0b0

SCTLR_EL2.SED is writeable.

0b1

SCTLR_EL2.SED is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ITD, bit [7]
When EL0 is capable of using AArch32:

Mask bit for ITD.

ITDMeaning
0b0

SCTLR_EL2.ITD is writeable.

0b1

SCTLR_EL2.ITD is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

nAA, bit [6]

Mask bit for nAA.

nAAMeaning
0b0

SCTLR_EL2.nAA is writeable.

0b1

SCTLR_EL2.nAA is not writeable.

The reset behavior of this field is:

CP15BEN, bit [5]
When EL0 is capable of using AArch32:

Mask bit for CP15BEN.

CP15BENMeaning
0b0

SCTLR_EL2.CP15BEN is writeable.

0b1

SCTLR_EL2.CP15BEN is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SA0, bit [4]

Mask bit for SA0.

SA0Meaning
0b0

SCTLR_EL2.SA0 is writeable.

0b1

SCTLR_EL2.SA0 is not writeable.

The reset behavior of this field is:

SA, bit [3]

Mask bit for SA.

SAMeaning
0b0

SCTLR_EL2.SA is writeable.

0b1

SCTLR_EL2.SA is not writeable.

The reset behavior of this field is:

C, bit [2]

Mask bit for C.

CMeaning
0b0

SCTLR_EL2.C is writeable.

0b1

SCTLR_EL2.C is not writeable.

The reset behavior of this field is:

A, bit [1]

Mask bit for A.

AMeaning
0b0

SCTLR_EL2.A is writeable.

0b1

SCTLR_EL2.A is not writeable.

The reset behavior of this field is:

M, bit [0]

Mask bit for M.

MMeaning
0b0

SCTLR_EL2.M is writeable.

0b1

SCTLR_EL2.M is not writeable.

The reset behavior of this field is:

Accessing SCTLRMASK_EL2

When the Effective value of HCR_EL2.E2H is 1, without explicit synchronization, accesses from EL2 using the accessor name SCTLRMASK_EL2 or SCTLRMASK_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>, SCTLRMASK_EL2

op0op1CRnCRmop2
0b110b1000b00010b01000b000

if !IsFeatureImplemented(FEAT_SRMASK) then UNDEFINED; elsif 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 if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.SRMASKEn == '0' then UNDEFINED; elsif HaveEL(EL3) && SCR_EL3.SRMASKEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); else X[t, 64] = SCTLRMASK_EL2; elsif PSTATE.EL == EL3 then X[t, 64] = SCTLRMASK_EL2;

MSR SCTLRMASK_EL2, <Xt>

op0op1CRnCRmop2
0b110b1000b00010b01000b000

if !IsFeatureImplemented(FEAT_SRMASK) then UNDEFINED; elsif 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 if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.SRMASKEn == '0' then UNDEFINED; elsif HaveEL(EL3) && SCR_EL3.SRMASKEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif !IsZero(EffectiveSCTLRMASK_EL2()) then UNDEFINED; else SCTLRMASK_EL2 = X[t, 64]; elsif PSTATE.EL == EL3 then SCTLRMASK_EL2 = X[t, 64];

MRS <Xt>, SCTLRMASK_EL1

op0op1CRnCRmop2
0b110b0000b00010b01000b000

if !IsFeatureImplemented(FEAT_SRMASK) then UNDEFINED; elsif PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.SRMASKEn == '0' then UNDEFINED; elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT2) && ((HaveEL(EL3) && SCR_EL3.FGTEn2 == '0') || HFGRTR2_EL2.nSCTLRMASK_EL1 == '0') then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && (!IsHCRXEL2Enabled() || HCRX_EL2.SRMASKEn == '0') then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && SCR_EL3.SRMASKEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif EffectiveHCR_EL2_NVx() IN {'111'} then X[t, 64] = NVMem[0x318]; else X[t, 64] = SCTLRMASK_EL1; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.SRMASKEn == '0' then UNDEFINED; elsif HaveEL(EL3) && SCR_EL3.SRMASKEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif ELIsInHost(EL2) then X[t, 64] = SCTLRMASK_EL2; else X[t, 64] = SCTLRMASK_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = SCTLRMASK_EL1;

MSR SCTLRMASK_EL1, <Xt>

op0op1CRnCRmop2
0b110b0000b00010b01000b000

if !IsFeatureImplemented(FEAT_SRMASK) then UNDEFINED; elsif PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.SRMASKEn == '0' then UNDEFINED; elsif EL2Enabled() && IsFeatureImplemented(FEAT_FGT2) && ((HaveEL(EL3) && SCR_EL3.FGTEn2 == '0') || HFGWTR2_EL2.nSCTLRMASK_EL1 == '0') then AArch64.SystemAccessTrap(EL2, 0x18); elsif EL2Enabled() && (!IsHCRXEL2Enabled() || HCRX_EL2.SRMASKEn == '0') then AArch64.SystemAccessTrap(EL2, 0x18); elsif HaveEL(EL3) && SCR_EL3.SRMASKEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif EffectiveHCR_EL2_NVx() IN {'111'} then NVMem[0x318] = X[t, 64]; elsif !IsZero(EffectiveSCTLRMASK_EL1()) then UNDEFINED; else SCTLRMASK_EL1 = X[t, 64]; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3.SRMASKEn == '0' then UNDEFINED; elsif HaveEL(EL3) && SCR_EL3.SRMASKEn == '0' then if EL3SDDUndef() then UNDEFINED; else AArch64.SystemAccessTrap(EL3, 0x18); elsif ELIsInHost(EL2) then if !IsZero(EffectiveSCTLRMASK_EL2()) then UNDEFINED; else SCTLRMASK_EL2 = X[t, 64]; else SCTLRMASK_EL1 = X[t, 64]; elsif PSTATE.EL == EL3 then SCTLRMASK_EL1 = X[t, 64];


15/12/2024 22:27; 5e0a212688c6bd7aee92394b6f5e491b4d0fee1d

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