TCRMASK_EL2, Translation Control Masking Register (EL2)

The TCRMASK_EL2 characteristics are:

Purpose

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

Configuration

This register is present only when FEAT_SRMASK is implemented. Otherwise, direct accesses to TCRMASK_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

TCRMASK_EL2 is a 64-bit register.

Field descriptions

When !ELIsInHost(EL2):

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0MTXDS
RES0TCMATBIDHWU62HWU61HWU60HWU59HPDRES0HDHATBIRES0PSRES0TG0RES0SH0RES0ORGN0RES0IRGN0RES0T0SZ

Bits [63:34]

Reserved, RES0.

MTX, bit [33]
When FEAT_MTE_NO_ADDRESS_TAGS is implemented or FEAT_MTE_CANONICAL_TAGS is implemented:

Mask bit for MTX.

MTXMeaning
0b0

TCR_EL2.MTX is writeable.

0b1

TCR_EL2.MTX is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

DS, bit [32]
When FEAT_LPA2 is implemented:

Mask bit for DS.

DSMeaning
0b0

TCR_EL2.DS is writeable.

0b1

TCR_EL2.DS is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [31]

Reserved, RES0.

TCMA, bit [30]
When FEAT_MTE2 is implemented:

Mask bit for TCMA.

TCMAMeaning
0b0

TCR_EL2.TCMA is writeable.

0b1

TCR_EL2.TCMA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TBID, bit [29]
When FEAT_PAuth is implemented:

Mask bit for TBID.

TBIDMeaning
0b0

TCR_EL2.TBID is writeable.

0b1

TCR_EL2.TBID is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU62, bit [28]
When FEAT_HPDS2 is implemented:

Mask bit for HWU62.

HWU62Meaning
0b0

TCR_EL2.HWU62 is writeable.

0b1

TCR_EL2.HWU62 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU61, bit [27]
When FEAT_HPDS2 is implemented:

Mask bit for HWU61.

HWU61Meaning
0b0

TCR_EL2.HWU61 is writeable.

0b1

TCR_EL2.HWU61 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU60, bit [26]
When FEAT_HPDS2 is implemented:

Mask bit for HWU60.

HWU60Meaning
0b0

TCR_EL2.HWU60 is writeable.

0b1

TCR_EL2.HWU60 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU59, bit [25]
When FEAT_HPDS2 is implemented:

Mask bit for HWU59.

HWU59Meaning
0b0

TCR_EL2.HWU59 is writeable.

0b1

TCR_EL2.HWU59 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HPD, bit [24]
When FEAT_HPDS is implemented:

Mask bit for HPD.

HPDMeaning
0b0

TCR_EL2.HPD is writeable.

0b1

TCR_EL2.HPD is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

Bit [23]

Reserved, RES0.

HD, bit [22]
When FEAT_HAFDBS is implemented:

Mask bit for HD.

HDMeaning
0b0

TCR_EL2.HD is writeable.

0b1

TCR_EL2.HD is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HA, bit [21]
When FEAT_HAFDBS is implemented:

Mask bit for HA.

HAMeaning
0b0

TCR_EL2.HA is writeable.

0b1

TCR_EL2.HA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TBI, bit [20]

Mask bit for TBI.

TBIMeaning
0b0

TCR_EL2.TBI is writeable.

0b1

TCR_EL2.TBI is not writeable.

The reset behavior of this field is:

Bits [19:17]

Reserved, RES0.

PS, bit [16]

Mask bit for PS.

PSMeaning
0b0

TCR_EL2.PS is writeable.

0b1

TCR_EL2.PS is not writeable.

The reset behavior of this field is:

Bit [15]

Reserved, RES0.

TG0, bit [14]

Mask bit for TG0.

TG0Meaning
0b0

TCR_EL2.TG0 is writeable.

0b1

TCR_EL2.TG0 is not writeable.

The reset behavior of this field is:

Bit [13]

Reserved, RES0.

SH0, bit [12]

Mask bit for SH0.

SH0Meaning
0b0

TCR_EL2.SH0 is writeable.

0b1

TCR_EL2.SH0 is not writeable.

The reset behavior of this field is:

Bit [11]

Reserved, RES0.

ORGN0, bit [10]

Mask bit for ORGN0.

ORGN0Meaning
0b0

TCR_EL2.ORGN0 is writeable.

0b1

TCR_EL2.ORGN0 is not writeable.

The reset behavior of this field is:

Bit [9]

Reserved, RES0.

IRGN0, bit [8]

Mask bit for IRGN0.

IRGN0Meaning
0b0

TCR_EL2.IRGN0 is writeable.

0b1

TCR_EL2.IRGN0 is not writeable.

The reset behavior of this field is:

Bits [7:1]

Reserved, RES0.

T0SZ, bit [0]

Mask bit for T0SZ.

T0SZMeaning
0b0

TCR_EL2.T0SZ is writeable.

0b1

TCR_EL2.T0SZ is not writeable.

The reset behavior of this field is:

When ELIsInHost(EL2):

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0MTX1MTX0DSTCMA1TCMA0E0PD1E0PD0NFD1NFD0TBID1TBID0HWU162HWU161HWU160HWU159HWU062HWU061HWU060HWU059HPD1HPD0HDHATBI1TBI0ASRES0IPS
RES0TG1RES0SH1RES0ORGN1RES0IRGN1EPD1A1RES0T1SZRES0TG0RES0SH0RES0ORGN0RES0IRGN0EPD0RES0T0SZ

Bits [63:62]

Reserved, RES0.

MTX1, bit [61]
When FEAT_MTE_NO_ADDRESS_TAGS is implemented or FEAT_MTE_CANONICAL_TAGS is implemented:

Mask bit for MTX1.

MTX1Meaning
0b0

TCR_EL2.MTX1 is writeable.

0b1

TCR_EL2.MTX1 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

MTX0, bit [60]
When FEAT_MTE_NO_ADDRESS_TAGS is implemented or FEAT_MTE_CANONICAL_TAGS is implemented:

Mask bit for MTX0.

MTX0Meaning
0b0

TCR_EL2.MTX0 is writeable.

0b1

TCR_EL2.MTX0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

DS, bit [59]
When FEAT_LPA2 is implemented:

Mask bit for DS.

DSMeaning
0b0

TCR_EL2.DS is writeable.

0b1

TCR_EL2.DS is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCMA1, bit [58]
When FEAT_MTE2 is implemented:

Mask bit for TCMA1.

TCMA1Meaning
0b0

TCR_EL2.TCMA1 is writeable.

0b1

TCR_EL2.TCMA1 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TCMA0, bit [57]
When FEAT_MTE2 is implemented:

Mask bit for TCMA0.

TCMA0Meaning
0b0

TCR_EL2.TCMA0 is writeable.

0b1

TCR_EL2.TCMA0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

E0PD1, bit [56]
When FEAT_E0PD is implemented:

Mask bit for E0PD1.

E0PD1Meaning
0b0

TCR_EL2.E0PD1 is writeable.

0b1

TCR_EL2.E0PD1 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

E0PD0, bit [55]
When FEAT_E0PD is implemented:

Mask bit for E0PD0.

E0PD0Meaning
0b0

TCR_EL2.E0PD0 is writeable.

0b1

TCR_EL2.E0PD0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

NFD1, bit [54]
When FEAT_SVE is implemented or FEAT_TME is implemented:

Mask bit for NFD1.

NFD1Meaning
0b0

TCR_EL2.NFD1 is writeable.

0b1

TCR_EL2.NFD1 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

NFD0, bit [53]
When FEAT_SVE is implemented or FEAT_TME is implemented:

Mask bit for NFD0.

NFD0Meaning
0b0

TCR_EL2.NFD0 is writeable.

0b1

TCR_EL2.NFD0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TBID1, bit [52]
When FEAT_PAuth is implemented:

Mask bit for TBID1.

TBID1Meaning
0b0

TCR_EL2.TBID1 is writeable.

0b1

TCR_EL2.TBID1 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TBID0, bit [51]
When FEAT_PAuth is implemented:

Mask bit for TBID0.

TBID0Meaning
0b0

TCR_EL2.TBID0 is writeable.

0b1

TCR_EL2.TBID0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU162, bit [50]
When FEAT_HPDS2 is implemented:

Mask bit for HWU162.

HWU162Meaning
0b0

TCR_EL2.HWU162 is writeable.

0b1

TCR_EL2.HWU162 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU161, bit [49]
When FEAT_HPDS2 is implemented:

Mask bit for HWU161.

HWU161Meaning
0b0

TCR_EL2.HWU161 is writeable.

0b1

TCR_EL2.HWU161 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU160, bit [48]
When FEAT_HPDS2 is implemented:

Mask bit for HWU160.

HWU160Meaning
0b0

TCR_EL2.HWU160 is writeable.

0b1

TCR_EL2.HWU160 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU159, bit [47]
When FEAT_HPDS2 is implemented:

Mask bit for HWU159.

HWU159Meaning
0b0

TCR_EL2.HWU159 is writeable.

0b1

TCR_EL2.HWU159 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU062, bit [46]
When FEAT_HPDS2 is implemented:

Mask bit for HWU062.

HWU062Meaning
0b0

TCR_EL2.HWU062 is writeable.

0b1

TCR_EL2.HWU062 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU061, bit [45]
When FEAT_HPDS2 is implemented:

Mask bit for HWU061.

HWU061Meaning
0b0

TCR_EL2.HWU061 is writeable.

0b1

TCR_EL2.HWU061 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU060, bit [44]
When FEAT_HPDS2 is implemented:

Mask bit for HWU060.

HWU060Meaning
0b0

TCR_EL2.HWU060 is writeable.

0b1

TCR_EL2.HWU060 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HWU059, bit [43]
When FEAT_HPDS2 is implemented:

Mask bit for HWU059.

HWU059Meaning
0b0

TCR_EL2.HWU059 is writeable.

0b1

TCR_EL2.HWU059 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HPD1, bit [42]
When FEAT_HPDS is implemented:

Mask bit for HPD1.

HPD1Meaning
0b0

TCR_EL2.HPD1 is writeable.

0b1

TCR_EL2.HPD1 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HPD0, bit [41]
When FEAT_HPDS is implemented:

Mask bit for HPD0.

HPD0Meaning
0b0

TCR_EL2.HPD0 is writeable.

0b1

TCR_EL2.HPD0 is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HD, bit [40]
When FEAT_HAFDBS is implemented:

Mask bit for HD.

HDMeaning
0b0

TCR_EL2.HD is writeable.

0b1

TCR_EL2.HD is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

HA, bit [39]
When FEAT_HAFDBS is implemented:

Mask bit for HA.

HAMeaning
0b0

TCR_EL2.HA is writeable.

0b1

TCR_EL2.HA is not writeable.

The reset behavior of this field is:


Otherwise:

Reserved, RES0.

TBI1, bit [38]

Mask bit for TBI1.

TBI1Meaning
0b0

TCR_EL2.TBI1 is writeable.

0b1

TCR_EL2.TBI1 is not writeable.

The reset behavior of this field is:

TBI0, bit [37]

Mask bit for TBI0.

TBI0Meaning
0b0

TCR_EL2.TBI0 is writeable.

0b1

TCR_EL2.TBI0 is not writeable.

The reset behavior of this field is:

AS, bit [36]

Mask bit for AS.

ASMeaning
0b0

TCR_EL2.AS is writeable.

0b1

TCR_EL2.AS is not writeable.

The reset behavior of this field is:

Bits [35:33]

Reserved, RES0.

IPS, bit [32]

Mask bit for IPS.

IPSMeaning
0b0

TCR_EL2.IPS is writeable.

0b1

TCR_EL2.IPS is not writeable.

The reset behavior of this field is:

Bit [31]

Reserved, RES0.

TG1, bit [30]

Mask bit for TG1.

TG1Meaning
0b0

TCR_EL2.TG1 is writeable.

0b1

TCR_EL2.TG1 is not writeable.

The reset behavior of this field is:

Bit [29]

Reserved, RES0.

SH1, bit [28]

Mask bit for SH1.

SH1Meaning
0b0

TCR_EL2.SH1 is writeable.

0b1

TCR_EL2.SH1 is not writeable.

The reset behavior of this field is:

Bit [27]

Reserved, RES0.

ORGN1, bit [26]

Mask bit for ORGN1.

ORGN1Meaning
0b0

TCR_EL2.ORGN1 is writeable.

0b1

TCR_EL2.ORGN1 is not writeable.

The reset behavior of this field is:

Bit [25]

Reserved, RES0.

IRGN1, bit [24]

Mask bit for IRGN1.

IRGN1Meaning
0b0

TCR_EL2.IRGN1 is writeable.

0b1

TCR_EL2.IRGN1 is not writeable.

The reset behavior of this field is:

EPD1, bit [23]

Mask bit for EPD1.

EPD1Meaning
0b0

TCR_EL2.EPD1 is writeable.

0b1

TCR_EL2.EPD1 is not writeable.

The reset behavior of this field is:

A1, bit [22]

Mask bit for A1.

A1Meaning
0b0

TCR_EL2.A1 is writeable.

0b1

TCR_EL2.A1 is not writeable.

The reset behavior of this field is:

Bits [21:17]

Reserved, RES0.

T1SZ, bit [16]

Mask bit for T1SZ.

T1SZMeaning
0b0

TCR_EL2.T1SZ is writeable.

0b1

TCR_EL2.T1SZ is not writeable.

The reset behavior of this field is:

Bit [15]

Reserved, RES0.

TG0, bit [14]

Mask bit for TG0.

TG0Meaning
0b0

TCR_EL2.TG0 is writeable.

0b1

TCR_EL2.TG0 is not writeable.

The reset behavior of this field is:

Bit [13]

Reserved, RES0.

SH0, bit [12]

Mask bit for SH0.

SH0Meaning
0b0

TCR_EL2.SH0 is writeable.

0b1

TCR_EL2.SH0 is not writeable.

The reset behavior of this field is:

Bit [11]

Reserved, RES0.

ORGN0, bit [10]

Mask bit for ORGN0.

ORGN0Meaning
0b0

TCR_EL2.ORGN0 is writeable.

0b1

TCR_EL2.ORGN0 is not writeable.

The reset behavior of this field is:

Bit [9]

Reserved, RES0.

IRGN0, bit [8]

Mask bit for IRGN0.

IRGN0Meaning
0b0

TCR_EL2.IRGN0 is writeable.

0b1

TCR_EL2.IRGN0 is not writeable.

The reset behavior of this field is:

EPD0, bit [7]

Mask bit for EPD0.

EPD0Meaning
0b0

TCR_EL2.EPD0 is writeable.

0b1

TCR_EL2.EPD0 is not writeable.

The reset behavior of this field is:

Bits [6:1]

Reserved, RES0.

T0SZ, bit [0]

Mask bit for T0SZ.

T0SZMeaning
0b0

TCR_EL2.T0SZ is writeable.

0b1

TCR_EL2.T0SZ is not writeable.

The reset behavior of this field is:

Accessing TCRMASK_EL2

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

op0op1CRnCRmop2
0b110b1000b00100b01110b010

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] = TCRMASK_EL2; elsif PSTATE.EL == EL3 then X[t, 64] = TCRMASK_EL2;

MSR TCRMASK_EL2, <Xt>

op0op1CRnCRmop2
0b110b1000b00100b01110b010

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(EffectiveTCRMASK_EL2()) then UNDEFINED; else TCRMASK_EL2 = X[t, 64]; elsif PSTATE.EL == EL3 then TCRMASK_EL2 = X[t, 64];

MRS <Xt>, TCRMASK_EL1

op0op1CRnCRmop2
0b110b0000b00100b01110b010

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.nTCRMASK_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[0x330]; else X[t, 64] = TCRMASK_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] = TCRMASK_EL2; else X[t, 64] = TCRMASK_EL1; elsif PSTATE.EL == EL3 then X[t, 64] = TCRMASK_EL1;

MSR TCRMASK_EL1, <Xt>

op0op1CRnCRmop2
0b110b0000b00100b01110b010

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.nTCRMASK_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[0x330] = X[t, 64]; elsif !IsZero(EffectiveTCRMASK_EL1()) then UNDEFINED; else TCRMASK_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(EffectiveTCRMASK_EL2()) then UNDEFINED; else TCRMASK_EL2 = X[t, 64]; else TCRMASK_EL1 = X[t, 64]; elsif PSTATE.EL == EL3 then TCRMASK_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.