This is a collection of Intel®’ IA32® Software Developer's Manuals (URL of the day) and AMD' AMD64 Architecture Programmer's Manual together with the related specifications, application notes, white papers, and change logs. The collection aims to keep all available revisions. It was originally created by Michal Necasek, see OS/2 Museum.

If you have a public document, related to the IA32® specifications and missing from the collection, please mail it to me. The content of this URL and all sub-ULRs is available for convenient bulk download by rsync x86docs password "" (empty).

SCTLRMASK_EL2

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 and FEAT_AA64 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
TIDCPSPINTMASKNMIEnTP2TCSOTCSO0EPANEnALSEnAS0EnASRRES0TWEDELTWEDEnDSSBSATAATA0RES0TCFRES0TCF0ITFSBBTBT0EnFPMMSCEnCMOW
EnIAEnIBLSMAOEnTLSMDEnDAUCIEEE0ESPANEISIESBTSCXTWXNnTWERES0nTWIUCTDZEEnDBIEOSEnRCTXRES0SEDITDnAACP15BENSA0SACAM

TIDCP, bit [63]
When FEAT_TIDCP1 is implemented:

Mask bit for TIDCP.

TIDCPMeaning
0b0

SCTLR_EL2.TIDCP is writable.

0b1

SCTLR_EL2.TIDCP is not writable.

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

0b1

SCTLR_EL2.SPINTMASK is not writable.

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

0b1

SCTLR_EL2.NMI is not writable.

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

0b1

SCTLR_EL2.EnTP2 is not writable.

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

0b1

SCTLR_EL2.TCSO is not writable.

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

0b1

SCTLR_EL2.TCSO0 is not writable.

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

0b1

SCTLR_EL2.EPAN is not writable.

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

0b1

SCTLR_EL2.EnALS is not writable.

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

0b1

SCTLR_EL2.EnAS0 is not writable.

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

0b1

SCTLR_EL2.EnASR is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bits [53:47]

Reserved, RES0.

TWEDEL, bit [46]
When FEAT_TWED is implemented:

Mask bit for TWEDEL.

TWEDELMeaning
0b0

SCTLR_EL2.TWEDEL is writable.

0b1

SCTLR_EL2.TWEDEL is not writable.

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

0b1

SCTLR_EL2.TWEDEn is not writable.

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

0b1

SCTLR_EL2.DSSBS is not writable.

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

0b1

SCTLR_EL2.ATA is not writable.

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

0b1

SCTLR_EL2.ATA0 is not writable.

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

0b1

SCTLR_EL2.TCF is not writable.

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

0b1

SCTLR_EL2.TCF0 is not writable.

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

0b1

SCTLR_EL2.ITFSB is not writable.

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

0b1

SCTLR_EL2.BT is not writable.

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

0b1

SCTLR_EL2.BT0 is not writable.

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

0b1

SCTLR_EL2.EnFPM is not writable.

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

0b1

SCTLR_EL2.MSCEn is not writable.

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

0b1

SCTLR_EL2.CMOW is not writable.

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

0b1

SCTLR_EL2.EnIA is not writable.

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

0b1

SCTLR_EL2.EnIB is not writable.

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

0b1

SCTLR_EL2.LSMAOE is not writable.

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

0b1

SCTLR_EL2.nTLSMD is not writable.

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

0b1

SCTLR_EL2.EnDA is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

UCI, bit [26]

Mask bit for UCI.

UCIMeaning
0b0

SCTLR_EL2.UCI is writable.

0b1

SCTLR_EL2.UCI is not writable.

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

0b1

SCTLR_EL2.EE is not writable.

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

0b1

SCTLR_EL2.E0E is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SPAN, bit [23]

Mask bit for SPAN.

SPANMeaning
0b0

SCTLR_EL2.SPAN is writable.

0b1

SCTLR_EL2.SPAN is not writable.

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

0b1

SCTLR_EL2.EIS is not writable.

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

0b1

SCTLR_EL2.IESB is not writable.

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

0b1

SCTLR_EL2.TSCXT is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

WXN, bit [19]

Mask bit for WXN.

WXNMeaning
0b0

SCTLR_EL2.WXN is writable.

0b1

SCTLR_EL2.WXN is not writable.

The reset behavior of this field is:

nTWE, bit [18]

Mask bit for nTWE.

nTWEMeaning
0b0

SCTLR_EL2.nTWE is writable.

0b1

SCTLR_EL2.nTWE is not writable.

The reset behavior of this field is:

Bit [17]

Reserved, RES0.

nTWI, bit [16]

Mask bit for nTWI.

nTWIMeaning
0b0

SCTLR_EL2.nTWI is writable.

0b1

SCTLR_EL2.nTWI is not writable.

The reset behavior of this field is:

UCT, bit [15]

Mask bit for UCT.

UCTMeaning
0b0

SCTLR_EL2.UCT is writable.

0b1

SCTLR_EL2.UCT is not writable.

The reset behavior of this field is:

DZE, bit [14]

Mask bit for DZE.

DZEMeaning
0b0

SCTLR_EL2.DZE is writable.

0b1

SCTLR_EL2.DZE is not writable.

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

0b1

SCTLR_EL2.EnDB is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

I, bit [12]

Mask bit for I.

IMeaning
0b0

SCTLR_EL2.I is writable.

0b1

SCTLR_EL2.I is not writable.

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

0b1

SCTLR_EL2.EOS is not writable.

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

0b1

SCTLR_EL2.EnRCTX is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [9]

Reserved, RES0.

SED, bit [8]
When FEAT_AA32EL0 is implemented:

Mask bit for SED.

SEDMeaning
0b0

SCTLR_EL2.SED is writable.

0b1

SCTLR_EL2.SED is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

ITD, bit [7]
When FEAT_AA32EL0 is implemented:

Mask bit for ITD.

ITDMeaning
0b0

SCTLR_EL2.ITD is writable.

0b1

SCTLR_EL2.ITD is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

nAA, bit [6]

Mask bit for nAA.

nAAMeaning
0b0

SCTLR_EL2.nAA is writable.

0b1

SCTLR_EL2.nAA is not writable.

The reset behavior of this field is:

CP15BEN, bit [5]
When FEAT_AA32EL0 is implemented:

Mask bit for CP15BEN.

CP15BENMeaning
0b0

SCTLR_EL2.CP15BEN is writable.

0b1

SCTLR_EL2.CP15BEN is not writable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

SA0, bit [4]

Mask bit for SA0.

SA0Meaning
0b0

SCTLR_EL2.SA0 is writable.

0b1

SCTLR_EL2.SA0 is not writable.

The reset behavior of this field is:

SA, bit [3]

Mask bit for SA.

SAMeaning
0b0

SCTLR_EL2.SA is writable.

0b1

SCTLR_EL2.SA is not writable.

The reset behavior of this field is:

C, bit [2]

Mask bit for C.

CMeaning
0b0

SCTLR_EL2.C is writable.

0b1

SCTLR_EL2.C is not writable.

The reset behavior of this field is:

A, bit [1]

Mask bit for A.

AMeaning
0b0

SCTLR_EL2.A is writable.

0b1

SCTLR_EL2.A is not writable.

The reset behavior of this field is:

M, bit [0]

Mask bit for M.

MMeaning
0b0

SCTLR_EL2.M is writable.

0b1

SCTLR_EL2.M is not writable.

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) && IsFeatureImplemented(FEAT_AA64)) 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(); end; 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); end; else X{64}(t) = SCTLRMASK_EL2(); end; elsif PSTATE.EL == EL3 then X{64}(t) = SCTLRMASK_EL2(); end;

MSR SCTLRMASK_EL2, <Xt>

op0op1CRnCRmop2
0b110b1000b00010b01000b000

if !(IsFeatureImplemented(FEAT_SRMASK) && IsFeatureImplemented(FEAT_AA64)) 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(); end; 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); end; elsif !IsZero(SCTLRMASK_EL2()) then Undefined(); else SCTLRMASK_EL2() = X{64}(t); end; elsif PSTATE.EL == EL3 then SCTLRMASK_EL2() = X{64}(t); end;

MRS <Xt>, SCTLRMASK_EL1

op0op1CRnCRmop2
0b110b0000b00010b01000b000

if !(IsFeatureImplemented(FEAT_SRMASK) && IsFeatureImplemented(FEAT_AA64)) 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); end; elsif EffectiveHCR_EL2_NVx() IN {'111'} then X{64}(t) = NVMem(0x318); else X{64}(t) = SCTLRMASK_EL1(); end; 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); end; elsif ELIsInHost(EL2) then X{64}(t) = SCTLRMASK_EL2(); else X{64}(t) = SCTLRMASK_EL1(); end; elsif PSTATE.EL == EL3 then X{64}(t) = SCTLRMASK_EL1(); end;

MSR SCTLRMASK_EL1, <Xt>

op0op1CRnCRmop2
0b110b0000b00010b01000b000

if !(IsFeatureImplemented(FEAT_SRMASK) && IsFeatureImplemented(FEAT_AA64)) 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); end; elsif EffectiveHCR_EL2_NVx() IN {'111'} then NVMem(0x318) = X{64}(t); elsif !IsZero(SCTLRMASK_EL1()) then Undefined(); else SCTLRMASK_EL1() = X{64}(t); end; 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); end; elsif ELIsInHost(EL2) then if !IsZero(SCTLRMASK_EL2()) then Undefined(); else SCTLRMASK_EL2() = X{64}(t); end; else SCTLRMASK_EL1() = X{64}(t); end; elsif PSTATE.EL == EL3 then SCTLRMASK_EL1() = X{64}(t); end;


2026-03-26 20:27:25, 2026-03_rel

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