SCTLRMASK_EL1, System Control Masking Register (EL1)

The SCTLRMASK_EL1 characteristics are:

Purpose

Mask register to prevent updates of fields in SCTLR_EL1 on writes to SCTLR_EL1 or SCTLRALIAS_EL1.

Configuration

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

Attributes

SCTLRMASK_EL1 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
TIDCPSPINTMASKNMIEnTP2TCSOTCSO0EPANEnALSEnAS0EnASRTMETME0TMTTMT0RES0TWEDELTWEDEnDSSBSATAATA0RES0TCFRES0TCF0ITFSBBT1BT0EnFPMMSCEnCMOW
EnIAEnIBLSMAOEnTLSMDEnDAUCIEEE0ESPANEISIESBTSCXTWXNnTWERES0nTWIUCTDZEEnDBIEOSEnRCTXUMASEDITDnAACP15BENSA0SACAM

TIDCP, bit [63]
When FEAT_TIDCP1 is implemented:

Mask bit for TIDCP.

TIDCPMeaning
0b0

SCTLR_EL1.TIDCP is writeable.

0b1

SCTLR_EL1.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_EL1.SPINTMASK is writeable.

0b1

SCTLR_EL1.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_EL1.NMI is writeable.

0b1

SCTLR_EL1.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_EL1.EnTP2 is writeable.

0b1

SCTLR_EL1.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_EL1.TCSO is writeable.

0b1

SCTLR_EL1.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_EL1.TCSO0 is writeable.

0b1

SCTLR_EL1.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_EL1.EPAN is writeable.

0b1

SCTLR_EL1.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_EL1.EnALS is writeable.

0b1

SCTLR_EL1.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_EL1.EnAS0 is writeable.

0b1

SCTLR_EL1.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_EL1.EnASR is writeable.

0b1

SCTLR_EL1.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_EL1.TME is writeable.

0b1

SCTLR_EL1.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_EL1.TME0 is writeable.

0b1

SCTLR_EL1.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_EL1.TMT is writeable.

0b1

SCTLR_EL1.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_EL1.TMT0 is writeable.

0b1

SCTLR_EL1.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_EL1.TWEDEL is writeable.

0b1

SCTLR_EL1.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_EL1.TWEDEn is writeable.

0b1

SCTLR_EL1.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_EL1.DSSBS is writeable.

0b1

SCTLR_EL1.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_EL1.ATA is writeable.

0b1

SCTLR_EL1.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_EL1.ATA0 is writeable.

0b1

SCTLR_EL1.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_EL1.TCF is writeable.

0b1

SCTLR_EL1.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_EL1.TCF0 is writeable.

0b1

SCTLR_EL1.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_EL1.ITFSB is writeable.

0b1

SCTLR_EL1.ITFSB is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

BT1, bit [36]
When FEAT_BTI is implemented:

Mask bit for BT1.

BT1Meaning
0b0

SCTLR_EL1.BT1 is writeable.

0b1

SCTLR_EL1.BT1 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_EL1.BT0 is writeable.

0b1

SCTLR_EL1.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_EL1.EnFPM is writeable.

0b1

SCTLR_EL1.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_EL1.MSCEn is writeable.

0b1

SCTLR_EL1.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_EL1.CMOW is writeable.

0b1

SCTLR_EL1.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_EL1.EnIA is writeable.

0b1

SCTLR_EL1.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_EL1.EnIB is writeable.

0b1

SCTLR_EL1.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_EL1.LSMAOE is writeable.

0b1

SCTLR_EL1.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_EL1.nTLSMD is writeable.

0b1

SCTLR_EL1.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_EL1.EnDA is writeable.

0b1

SCTLR_EL1.EnDA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

UCI, bit [26]

Mask bit for UCI.

UCIMeaning
0b0

SCTLR_EL1.UCI is writeable.

0b1

SCTLR_EL1.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_EL1.EE is writeable.

0b1

SCTLR_EL1.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_EL1.E0E is writeable.

0b1

SCTLR_EL1.E0E is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SPAN, bit [23]
When FEAT_PAN is implemented:

Mask bit for SPAN.

SPANMeaning
0b0

SCTLR_EL1.SPAN is writeable.

0b1

SCTLR_EL1.SPAN is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

EIS, bit [22]
When FEAT_ExS is implemented:

Mask bit for EIS.

EISMeaning
0b0

SCTLR_EL1.EIS is writeable.

0b1

SCTLR_EL1.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_EL1.IESB is writeable.

0b1

SCTLR_EL1.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_EL1.TSCXT is writeable.

0b1

SCTLR_EL1.TSCXT is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

WXN, bit [19]

Mask bit for WXN.

WXNMeaning
0b0

SCTLR_EL1.WXN is writeable.

0b1

SCTLR_EL1.WXN is not writeable.

The reset behavior of this field is:

nTWE, bit [18]

Mask bit for nTWE.

nTWEMeaning
0b0

SCTLR_EL1.nTWE is writeable.

0b1

SCTLR_EL1.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_EL1.nTWI is writeable.

0b1

SCTLR_EL1.nTWI is not writeable.

The reset behavior of this field is:

UCT, bit [15]

Mask bit for UCT.

UCTMeaning
0b0

SCTLR_EL1.UCT is writeable.

0b1

SCTLR_EL1.UCT is not writeable.

The reset behavior of this field is:

DZE, bit [14]

Mask bit for DZE.

DZEMeaning
0b0

SCTLR_EL1.DZE is writeable.

0b1

SCTLR_EL1.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_EL1.EnDB is writeable.

0b1

SCTLR_EL1.EnDB is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

I, bit [12]

Mask bit for I.

IMeaning
0b0

SCTLR_EL1.I is writeable.

0b1

SCTLR_EL1.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_EL1.EOS is writeable.

0b1

SCTLR_EL1.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_EL1.EnRCTX is writeable.

0b1

SCTLR_EL1.EnRCTX is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

UMA, bit [9]

Mask bit for UMA.

UMAMeaning
0b0

SCTLR_EL1.UMA is writeable.

0b1

SCTLR_EL1.UMA is not writeable.

The reset behavior of this field is:

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

Mask bit for SED.

SEDMeaning
0b0

SCTLR_EL1.SED is writeable.

0b1

SCTLR_EL1.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_EL1.ITD is writeable.

0b1

SCTLR_EL1.ITD is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

nAA, bit [6]
When FEAT_LSE2:

Mask bit for nAA.

nAAMeaning
0b0

SCTLR_EL1.nAA is writeable.

0b1

SCTLR_EL1.nAA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

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

Mask bit for CP15BEN.

CP15BENMeaning
0b0

SCTLR_EL1.CP15BEN is writeable.

0b1

SCTLR_EL1.CP15BEN is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SA0, bit [4]

Mask bit for SA0.

SA0Meaning
0b0

SCTLR_EL1.SA0 is writeable.

0b1

SCTLR_EL1.SA0 is not writeable.

The reset behavior of this field is:

SA, bit [3]

Mask bit for SA.

SAMeaning
0b0

SCTLR_EL1.SA is writeable.

0b1

SCTLR_EL1.SA is not writeable.

The reset behavior of this field is:

C, bit [2]

Mask bit for C.

CMeaning
0b0

SCTLR_EL1.C is writeable.

0b1

SCTLR_EL1.C is not writeable.

The reset behavior of this field is:

A, bit [1]

Mask bit for A.

AMeaning
0b0

SCTLR_EL1.A is writeable.

0b1

SCTLR_EL1.A is not writeable.

The reset behavior of this field is:

M, bit [0]

Mask bit for M.

MMeaning
0b0

SCTLR_EL1.M is writeable.

0b1

SCTLR_EL1.M is not writeable.

The reset behavior of this field is:

Accessing SCTLRMASK_EL1

When the Effective value of HCR_EL2.E2H is 1, without explicit synchronization, accesses from EL3 using the accessor name SCTLRMASK_EL1 or SCTLRMASK_EL12 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_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];

MRS <Xt>, SCTLRMASK_EL12

op0op1CRnCRmop2
0b110b1010b00010b01000b000

if !IsFeatureImplemented(FEAT_SRMASK) then UNDEFINED; elsif PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() == '101' then X[t, 64] = NVMem[0x318]; elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64.SystemAccessTrap(EL2, 0x18); else UNDEFINED; elsif PSTATE.EL == EL2 then if ELIsInHost(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_EL1; else UNDEFINED; elsif PSTATE.EL == EL3 then if ELIsInHost(EL2) then X[t, 64] = SCTLRMASK_EL1; else UNDEFINED;

MSR SCTLRMASK_EL12, <Xt>

op0op1CRnCRmop2
0b110b1010b00010b01000b000

if !IsFeatureImplemented(FEAT_SRMASK) then UNDEFINED; elsif PSTATE.EL == EL0 then UNDEFINED; elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() == '101' then NVMem[0x318] = 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 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 SCTLRMASK_EL1 = X[t, 64]; else UNDEFINED; elsif PSTATE.EL == EL3 then if ELIsInHost(EL2) then SCTLRMASK_EL1 = X[t, 64]; else UNDEFINED;


15/12/2024 22:27; 5e0a212688c6bd7aee92394b6f5e491b4d0fee1d

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