<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE register_page SYSTEM "registers.dtd">
<!-- Copyright (c) 2010-2026 Arm Limited or its affiliates. All rights reserved. -->
<!-- This document is Non-Confidential. This document may only be used and distributed in accordance with the terms of the agreement entered into by Arm and the party that Arm delivered this document to. -->
<!--The data contained in this document is preliminary and subject to change or correction following further review. -->
<?xml-stylesheet href="one_register.xsl" type="text/xsl" ?>







<register_page>
  <registers>
  
    <register execution_state="AArch64" is_register="True" is_internal="True" is_stub_entry="False">
      <reg_short_name>TCR_EL2</reg_short_name>
        
        <reg_long_name>Translation Control Register (EL2)</reg_long_name>



      
            <reg_condition otherwise="UNDEFINED">when FEAT_AA64 is implemented</reg_condition>
      




          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        



    
      
      <reg_mapping>
        
  

    

  

    <mapped_name filename="AArch32-htcr.xml">HTCR</mapped_name>
  <mapped_type>Architectural</mapped_type>
      <mapped_execution_state>AArch32</mapped_execution_state>
    <mapped_from_startbit>31</mapped_from_startbit>
    <mapped_from_endbit>0</mapped_from_endbit>
    <mapped_to_startbit>31</mapped_to_startbit>
    <mapped_to_endbit>0</mapped_to_endbit>
    <mapped_from_rangeset output="31:0">
      <range>
        <msb>31</msb>
        <lsb>0</lsb>
      </range>
    </mapped_from_rangeset>
    <mapped_to_rangeset output="31:0">
      <range>
        <msb>31</msb>
        <lsb>0</lsb>
      </range>
    </mapped_to_rangeset>

      </reg_mapping>

      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>The control register for stage 1 of the EL2, or EL2&amp;0, translation regime:</para>

      </purpose_text>
      <purpose_text>
        <list type="unordered">
<listitem><content>When the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.E2H is not 1, this register controls stage 1 of the EL2 translation regime, that supports a single VA range, translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</content>
</listitem><listitem><content>When the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.E2H is 1, this register controls stage 1 of the EL2&amp;0 translation regime, that supports both:<list type="unordered">
<listitem><content>A lower VA range, translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</content>
</listitem><listitem><content>A higher VA range, translated using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</content>
</listitem></list>
</content>
</listitem></list>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
            <reg_group>Memory</reg_group>
            <reg_group>Virt</reg_group>
      </reg_groups>
      <reg_configuration>
        
    
      <configuration_text>
        <para>If EL2 is not implemented, this register is <arm-defined-word>RES0</arm-defined-word> from EL3.</para>

      </configuration_text>
      <configuration_text>
        <para>This register has no effect if EL2 is not enabled in the current Security state.</para>
      </configuration_text>

      </reg_configuration>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>TCR_EL2 is a 64-bit register.</para>
      </attributes_text>

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="64">
  <fields_condition>When EffectiveHCR_EL2_E2H() == '0'</fields_condition>
  <fields_instance>EffectiveHCR_EL2_E2H() == '0'</fields_instance>
  <text_before_fields>
    <para>Any of the bits in TCR_EL2 are permitted to be cached in a TLB.</para>
  </text_before_fields>
  <field id="fieldset_0-63_34" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>63</field_msb>
    <field_lsb>34</field_lsb>
    <rel_range>63:34</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_0-33_33-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>MTX</field_name>
    <field_msb>33</field_msb>
    <field_lsb>33</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Extended memory tag checking.</para>
<para>This field controls address generation and Canonical tagging when EL2 is using AArch64 where the data address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
<para>This control has an effect regardless of whether stage 1 of the EL2 translation regime is enabled or not.</para></field_description>
    <field_description order="after">
      <para>For more information see <xref linkend="#MDSec.Mte_tagging">Logical address tagging</xref> and <xref linkend="#MDSec.tagged_memory">Memory region tagging types</xref>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>Canonical tagging is disabled.</para>
<para>This control has no effect on address generation.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Canonical tagging is enabled.</para>
<para>Bits[59:56] of a 64-bit VA hold a Logical Address Tag, and all of the following apply:</para>
<list type="unordered">
<listitem><content>Bits[59:56] are treated as <binarynumber>0b0000</binarynumber> when checking if the address is out of range.</content>
</listitem><listitem><content>If FEAT_PAuth is implemented, bits[59:56] are not part of the PAC field.</content>
</listitem><listitem><content>A Canonical Tag Check operation is performed on Tag Checked memory accesses to a Canonically Tagged memory location.</content>
</listitem></list></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_MTE_NO_ADDRESS_TAGS is implemented or FEAT_MTE_CANONICAL_TAGS is implemented</fields_condition>
  </field>
  <field id="fieldset_0-33_33-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>33</field_msb>
    <field_lsb>33</field_lsb>
    <rel_range>33</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-32_32-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>DS</field_name>
    <field_msb>32</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>This field affects:</para>
<list type="unordered">
<listitem><content>Whether a 52-bit output address can be described by the translation tables of the 4KB or 16KB translation granules.</content>
</listitem><listitem><content>The minimum value of TCR_EL2.T0SZ.</content>
</listitem><listitem><content>How and where shareability for Block and Page descriptors are encoded.</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>This field is <arm-defined-word>RES0</arm-defined-word> for a 64KB translation granule.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>Bits[49:48] of translation descriptors are <arm-defined-word>RES0</arm-defined-word>.</para>
<para>Bits[9:8] in Block and Page descriptors encode shareability information in the SH[1:0] field. Bits[9:8] in table descriptors are ignored by hardware.</para>
<para>The minimum value of TCR_EL2.T0SZ is 16. Any memory access using a smaller value generates a stage 1 level 0 translation table fault.</para>
<para>Output address[51:48] is <binarynumber>0b0000</binarynumber>.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Bits[49:48] of translation descriptors hold output address[49:48].</para>
<para>Bits[9:8] of Translation table descriptors hold output address[51:50].</para>
<para>The shareability information of Block and Page descriptors for cacheable locations is determined by TCR_EL2.SH0.</para>
<para>The minimum value of TCR_EL2.T0SZ is 12. Any memory access using a smaller value generates a stage 1 level 0 translation table fault.</para>
<para>All calculations of the stage 1 base address are modified for tables of fewer than 8 entries so that the table is aligned to 64 bytes.</para>
<para>Bits[5:2] of <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> are used to hold bits[51:48] of the output address in all cases.</para>
<note><para>As <xref linkend="#FEAT_LVA">FEAT_LVA</xref> must be implemented if TCR_EL2.DS == 1, the minimum value of the TCR_EL2.T0SZ field is 12, as determined by that extension.</para></note><para>For the TLBI Range instructions affecting VA, the format of the argument is changed so that bits[36:0] hold BaseADDR[52:16]. For the 4KB translation granule, bits[15:12] of BaseADDR are treated as <binarynumber>0b0000</binarynumber>. For the 16KB translation granule, bits[15:14] of BaseADDR are treated as <binarynumber>0b00</binarynumber>.</para>
<note><para>This forces alignment of the ranges used by the TLBI range instructions.</para></note></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_LPA2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-32_32-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>DS</field_name>
    <field_msb>32</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>The Effective value of this bit is 0.</para>
    </field_description>
    <field_access>
      <field_access_state>
        <field_access_type>
          <arm-defined-word>RES0</arm-defined-word>
        </field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-31_31" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES1">
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>31</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_0-30_30-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TCMA</field_name>
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Controls the generation of Unchecked accesses at EL2 when address [59:56] = <binarynumber>0b0000</binarynumber>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control has no effect on the generation of Unchecked accesses.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>All accesses are Unchecked.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_MTE2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-30_30-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>30</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-29_29-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TBID</field_name>
    <field_msb>29</field_msb>
    <field_lsb>29</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Controls the use of the top byte of instruction addresses for address matching.</para>
<para>For the purpose of this field, all cache maintenance and address translation instructions that perform address translation are treated as data accesses.</para>
<para>For more information, see <xref linkend="#MDSec.Address_tagging">'Address tagging'</xref>.</para></field_description>
    <field_description order="after">
      <para>This affects addresses where the address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>TCR_EL2.TBI applies to Instruction and Data accesses.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>TCR_EL2.TBI applies to Data accesses only.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_PAuth is implemented</fields_condition>
  </field>
  <field id="fieldset_0-29_29-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>29</field_msb>
    <field_lsb>29</field_lsb>
    <rel_range>29</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-28_28-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU62</field_name>
    <field_msb>28</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[62] of the stage 1 translation table Block or Page entry.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Bit[62] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Bit[62] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-28_28-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>28</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>28</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-27_27-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU61</field_name>
    <field_msb>27</field_msb>
    <field_lsb>27</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[61] of the stage 1 translation table Block or Page entry.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Bit[61] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Bit[61] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-27_27-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>27</field_msb>
    <field_lsb>27</field_lsb>
    <rel_range>27</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-26_26-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU60</field_name>
    <field_msb>26</field_msb>
    <field_lsb>26</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[60] of the stage 1 translation table Block or Page entry.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Bit[60] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Bit[60] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-26_26-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>26</field_msb>
    <field_lsb>26</field_lsb>
    <rel_range>26</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-25_25-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU59</field_name>
    <field_msb>25</field_msb>
    <field_lsb>25</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[59] of the stage 1 translation table Block or Page entry.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Bit[59] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Bit[59] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-25_25-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>25</field_msb>
    <field_lsb>25</field_lsb>
    <rel_range>25</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-24_24-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HPD</field_name>
    <field_msb>24</field_msb>
    <field_lsb>24</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hierarchical Permission Disables. This affects the hierarchical control bits, APTable, PXNTable, and UXNTable, except NSTable, in the translation tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>When disabled, the permissions are treated as if the bits are zero.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Hierarchical permissions are enabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Hierarchical permissions are disabled.</para>
<note><para>In this case, bit[61] (APTable[0]) and bit[59] (PXNTable) of the next level descriptor attributes are required to be ignored by the PE and are no longer reserved, allowing them to be used by software.</para></note></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HPDS is implemented</fields_condition>
  </field>
  <field id="fieldset_0-24_24-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>24</field_msb>
    <field_lsb>24</field_lsb>
    <rel_range>24</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-23_23" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES1">
    <field_msb>23</field_msb>
    <field_lsb>23</field_lsb>
    <rel_range>23</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_0-22_22-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HD</field_name>
    <field_msb>22</field_msb>
    <field_lsb>22</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware management of dirty state in stage 1 translations from EL2.</para>
    </field_description>
    <field_description order="after">
      <para>When the Effective value of TCR_EL2.HA is 0, this field behaves as 0 for all purposes other than a direct read of the value of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Stage 1 hardware management of dirty state disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Stage 1 hardware management of dirty state enabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HAFDBS is implemented</fields_condition>
  </field>
  <field id="fieldset_0-22_22-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>22</field_msb>
    <field_lsb>22</field_lsb>
    <rel_range>22</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-21_21-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HA</field_name>
    <field_msb>21</field_msb>
    <field_lsb>21</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Access flag update in stage 1 translations from EL2.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Stage 1 Access flag update disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Stage 1 Access flag update enabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_HAF is implemented</fields_condition>
  </field>
  <field id="fieldset_0-21_21-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>21</field_msb>
    <field_lsb>21</field_lsb>
    <rel_range>21</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-20_20" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>TBI</field_name>
    <field_msb>20</field_msb>
    <field_lsb>20</field_lsb>
    <rel_range>20</rel_range>
    <field_description order="before"><para>Top Byte Ignored. Indicates whether the top byte of an address is used for address match for the <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> region, or ignored and used for tagged addresses.</para>
<para>For more information, see <xref linkend="#MDSec.Address_tagging">'Address tagging'</xref>.</para></field_description>
    <field_description order="after"><para>This affects addresses generated at EL2 using AArch64 where the address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>. It has an effect whether the EL2 translation regime is enabled or not.</para>
<para>If <xref linkend="#FEAT_PAuth">FEAT_PAuth</xref> is implemented and TCR_EL2.TBID is 1, then this field only applies to Data accesses.</para>
<para>If the value of TBI is 1, then bits[63:56] of that target address are also set to 0 before the address is stored in the PC, in the following cases:</para>
<list type="unordered">
<listitem><content>A branch or procedure return within EL2.</content>
</listitem><listitem><content>An exception taken to EL2.</content>
</listitem><listitem><content>An exception return to EL2.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Top Byte used in the address calculation.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Top Byte ignored in the address calculation.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-19_19" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>19</field_msb>
    <field_lsb>19</field_lsb>
    <rel_range>19</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_0-18_16" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>PS</field_name>
    <field_msb>18</field_msb>
    <field_lsb>16</field_lsb>
    <rel_range>18:16</rel_range>
    <field_description order="before">
      <para>Physical Address Size.</para>
    </field_description>
    <field_description order="after"><para>The following table captures the output address size represented by the value <binarynumber>0b110</binarynumber>:</para>
<table><tgroup cols="4"><thead><row><entry>ID_AA64MMFR0_EL1.PARange</entry><entry>Translation Granule</entry><entry>DS<sup>1</sup></entry><entry>Represented OA size</entry></row></thead><tbody><row><entry><binarynumber>0b0101</binarynumber></entry><entry>Any</entry><entry>Any</entry><entry>48 bits, 256TB</entry></row><row><entry><binarynumber>0b011x</binarynumber></entry><entry>4KB or 16KB</entry><entry>0</entry><entry>48 bits, 256TB</entry></row><row><entry><binarynumber>0b011x</binarynumber></entry><entry>4KB or 16KB</entry><entry>1</entry><entry>52 bits, 4PB</entry></row><row><entry><binarynumber>0b011x</binarynumber></entry><entry>64KB</entry><entry>N/A</entry><entry>52 bits, 4PB</entry></row></tbody></tgroup></table>
<para><sup>1</sup> This column represents the value of <register_link state="AArch64" id="AArch64-tcr_el2.xml">TCR_EL2</register_link>.DS.</para>
<para>The output address size represented by the value <binarynumber>0b111</binarynumber> is the OA size represented by <binarynumber>0b110</binarynumber>.</para>
<para>If 52-bit PA is supported, and the translation table descriptors cannot express an OA larger than 48-bits, then bits[51:48] of every translation table base address are treated as <binarynumber>0b0000</binarynumber> for the stage of translation controlled by TCR_EL2.</para>
<para>If 56-bit PA is supported, and the translation table descriptors cannot express an OA larger than 52-bits, then bits[55:52] of every translation table base address are treated as <binarynumber>0b0000</binarynumber> for the stage of translation controlled by TCR_EL2.</para>
<para>If the output address size represented by this field is larger than the supported PA size expressed in <register_link state="AArch64" id="AArch64-id_aa64mmfr0_el1.xml">ID_AA64MMFR0_EL1</register_link>.PARange, then the output address size is treated as being the same as the supported PA size. Arm strongly recommends that software avoids configuring this field to a value representing an output address size larger than the supported PA size.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b000</field_value>
        <field_value_description>
          <para>32 bits, 4GB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b001</field_value>
        <field_value_description>
          <para>36 bits, 64GB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b010</field_value>
        <field_value_description>
          <para>40 bits, 1TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b011</field_value>
        <field_value_description>
          <para>42 bits, 4TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b100</field_value>
        <field_value_description>
          <para>44 bits, 16TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b101</field_value>
        <field_value_description>
          <para>48 bits, 256TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b110</field_value>
        <field_value_description>
          <para>52 bits, 4PB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-15_14" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>TG0</field_name>
    <field_msb>15</field_msb>
    <field_lsb>14</field_lsb>
    <rel_range>15:14</rel_range>
    <field_description order="before">
      <para>Granule size for the <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after"><para>Other values are reserved.</para>
<para>If the value is programmed to either a reserved value or a size that has not been implemented, then the hardware will treat the field as if it has been programmed to an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> choice of the sizes that has been implemented for all purposes other than the value read back from this register.</para>
<para>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the value read back is the value programmed or the value that corresponds to the size chosen.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>4KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>64KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>16KB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-13_12" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>SH0</field_name>
    <field_msb>13</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>13:12</rel_range>
    <field_description order="before">
      <para>Shareability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>Other values are reserved. The effect of programming this field to a Reserved value is that behavior is <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Non-shareable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Outer Shareable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Inner Shareable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-11_10" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>ORGN0</field_name>
    <field_msb>11</field_msb>
    <field_lsb>10</field_lsb>
    <rel_range>11:10</rel_range>
    <field_description order="before">
      <para>Outer cacheability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Normal memory, Outer Non-cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Back Read-Allocate Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Through Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Back Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-9_8" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>IRGN0</field_name>
    <field_msb>9</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>9:8</rel_range>
    <field_description order="before">
      <para>Inner cacheability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Normal memory, Inner Non-cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Back Read-Allocate Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Through Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Back Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-7_6" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>7</field_msb>
    <field_lsb>6</field_lsb>
    <rel_range>7:6</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_0-5_0" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>T0SZ</field_name>
    <field_msb>5</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>5:0</rel_range>
    <field_description order="before"><para>The size offset of the memory region addressed by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>. The region size is 2<sup>(64-T0SZ)</sup> bytes.</para>
<para>The maximum and minimum possible values for T0SZ depend on the level of translation table and the memory translation granule size, as described in the AArch64 Virtual Memory System Architecture chapter.</para>
<note><para>For the 4KB translation granule, if <xref linkend="#FEAT_LPA2">FEAT_LPA2</xref> is implemented, TCR_EL2.DS is 1, and this field is less than 16, the translation table walk begins with a level -1 initial lookup.</para><para>For the 16KB translation granule, if <xref linkend="#FEAT_LPA2">FEAT_LPA2</xref> is implemented, TCR_EL2.DS is 1, and this field is less than 17, the translation table walk begins with a level 0 initial lookup.</para></note></field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <text_after_fields/>
</fields>



<fields id="fieldset_1" length="64">
  <fields_condition>When EffectiveHCR_EL2_E2H() == '1'</fields_condition>
  <fields_instance>EffectiveHCR_EL2_E2H() == '1'</fields_instance>
  <text_before_fields>
    <para>Any of the bits in TCR_EL2, other than the EPDx bits when they have the value 1, and the A1 bit are permitted to be cached in a TLB.</para>
  </text_before_fields>
  <field id="fieldset_1-63_62" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>63</field_msb>
    <field_lsb>62</field_lsb>
    <rel_range>63:62</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-61_61-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>MTX1</field_name>
    <field_msb>61</field_msb>
    <field_lsb>61</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Extended memory tag checking.</para>
<para>This field controls address generation and Canonical tagging when EL0 and EL2 are using AArch64 where the data address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
<para>This control has an effect regardless of whether stage 1 of the EL2&amp;0 translation regime is enabled or not.</para></field_description>
    <field_description order="after">
      <para>For more information see <xref linkend="#MDSec.Mte_tagging">Logical address tagging</xref> and <xref linkend="#MDSec.tagged_memory">Memory region tagging types</xref>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>Canonical tagging is disabled.</para>
<para>This control has no effect on address generation.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Canonical tagging is enabled.</para>
<para>Bits[59:56] of a 64-bit VA hold a Logical Address Tag, and all of the following apply:</para>
<list type="unordered">
<listitem><content>Bits[59:56] are treated as <binarynumber>0b1111</binarynumber> when checking if the address is out of range.</content>
</listitem><listitem><content>If FEAT_PAuth is implemented, bits[59:56] are not part of the PAC field.</content>
</listitem><listitem><content>A Canonical Tag Check operation is performed on Tag Checked memory accesses to a Canonically Tagged memory location.</content>
</listitem></list></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.MTX1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_MTE_NO_ADDRESS_TAGS is implemented or FEAT_MTE_CANONICAL_TAGS is implemented</fields_condition>
  </field>
  <field id="fieldset_1-61_61-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>61</field_msb>
    <field_lsb>61</field_lsb>
    <rel_range>61</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-60_60-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>MTX0</field_name>
    <field_msb>60</field_msb>
    <field_lsb>60</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Extended memory tag checking.</para>
<para>This field controls address generation and Canonical tagging when EL0 and EL2 are using AArch64 where the data address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
<para>This control has an effect regardless of whether stage 1 of the EL2&amp;0 translation regime is enabled or not.</para></field_description>
    <field_description order="after">
      <para>For more information see <xref linkend="#MDSec.Mte_tagging">Logical address tagging</xref> and <xref linkend="#MDSec.tagged_memory">Memory region tagging types</xref>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>Canonical tagging is disabled.</para>
<para>This control has no effect on address generation.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Canonical tagging is enabled.</para>
<para>Bits[59:56] of a 64-bit VA hold a Logical Address Tag, and all of the following apply:</para>
<list type="unordered">
<listitem><content>Bits[59:56] are treated as <binarynumber>0b0000</binarynumber> when checking if the address is out of range.</content>
</listitem><listitem><content>If FEAT_PAuth is implemented, bits[59:56] are not part of the PAC field.</content>
</listitem><listitem><content>A Canonical Tag Check operation is performed on Tag Checked memory accesses to a Canonically Tagged memory location.</content>
</listitem></list></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.MTX0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_MTE_NO_ADDRESS_TAGS is implemented or FEAT_MTE_CANONICAL_TAGS is implemented</fields_condition>
  </field>
  <field id="fieldset_1-60_60-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>60</field_msb>
    <field_lsb>60</field_lsb>
    <rel_range>60</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-59_59-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>DS</field_name>
    <field_msb>59</field_msb>
    <field_lsb>59</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>This field affects:</para>
<list type="unordered">
<listitem><content>Whether a 52-bit output address can be described by the translation tables of the 4KB or 16KB translation granules.</content>
</listitem><listitem><content>The minimum value of TCR_EL2.{T0SZ,T1SZ}.</content>
</listitem><listitem><content>How and where shareability for Block and Page descriptors are encoded.</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>This field is <arm-defined-word>RES0</arm-defined-word> for a 64KB translation granule.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>Bits[49:48] of translation descriptors are <arm-defined-word>RES0</arm-defined-word>.</para>
<para>Bits[9:8] in Block and Page descriptors encode shareability information in the SH[1:0] field. Bits[9:8] in table descriptors are ignored by hardware.</para>
<para>The minimum value of the TCR_EL2.{T0SZ, T1SZ} fields is 16. Any memory access using a smaller value generates a stage 1 level 0 translation table fault.</para>
<para>Output address[51:48] is <binarynumber>0b0000</binarynumber>.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Bits[49:48] of translation descriptors hold output address[49:48].</para>
<para>Bits[9:8] of Translation table descriptors hold output address[51:50].</para>
<para>The shareability information of Block and Page descriptors for cacheable locations is determined by:</para>
<list type="unordered">
<listitem><content>TCR_EL2.SH0 if the VA is an address that is translated using tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</content>
</listitem><listitem><content>TCR_EL2.SH1 if the VA is an address that is translated using tables pointed to by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</content>
</listitem></list>
<para>The minimum value of the TCR_EL2.{T0SZ, T1SZ} fields is 12. Any memory access using a smaller value generates a stage 1 level 0 translation table fault.</para>
<para>All calculations of the stage 1 base address are modified for tables of fewer than 16 entries so that the table is aligned to 64 bytes.</para>
<para>Bits[5:2] of <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> or <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> are used to hold bits[51:48] of the output address in all cases.</para>
<note><para>As <xref linkend="#FEAT_LVA">FEAT_LVA</xref> must be implemented if TCR_EL2.DS == 1, the minimum value of the TCR_EL2.{T0SZ, T1SZ} fields is 12, as determined by that extension.</para></note><para>For the TLBI Range instructions affecting VA, the format of the argument is changed so that bits[36:0] hold BaseADDR[52:16]. For the 4KB translation granule, bits[15:12] of BaseADDR are treated as <binarynumber>0b0000</binarynumber>. For the 16KB translation granule, bits[15:14] of BaseADDR are treated as <binarynumber>0b00</binarynumber>.</para>
<note><para>This forces alignment of the ranges used by the TLBI range instructions.</para></note></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.DS == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_LPA2 is implemented and (FEAT_D128 is not implemented or TCR2_EL2.D128 == '0')</fields_condition>
  </field>
  <field id="fieldset_1-59_59-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>DS</field_name>
    <field_msb>59</field_msb>
    <field_lsb>59</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>, and the Effective value of this bit is 0.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-58_58-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TCMA1</field_name>
    <field_msb>58</field_msb>
    <field_lsb>58</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Controls the generation of Unchecked accesses at EL2, and at EL0 if <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE=1, when address[59:55] = <binarynumber>0b11111</binarynumber>.</para>
    </field_description>
    <field_description order="after">
      <note>
        <para>Software may change this control bit on a context switch.</para>
      </note>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control has no effect on the generation of Unchecked accesses at EL2 or EL0.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>All accesses are Unchecked.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TCMA1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_MTE2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-58_58-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>58</field_msb>
    <field_lsb>58</field_lsb>
    <rel_range>58</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-57_57-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TCMA0</field_name>
    <field_msb>57</field_msb>
    <field_lsb>57</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Controls the generation of Unchecked accesses at EL2, and at EL0 if <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE=1, when address[59:55] = <binarynumber>0b00000</binarynumber>.</para>
    </field_description>
    <field_description order="after">
      <note>
        <para>Software may change this control bit on a context switch.</para>
      </note>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control has no effect on the generation of Unchecked accesses at EL2 or EL0.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>All accesses are Unchecked.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TCMA0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_MTE2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-57_57-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>57</field_msb>
    <field_lsb>57</field_lsb>
    <rel_range>57</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-56_56-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>E0PD1</field_name>
    <field_msb>56</field_msb>
    <field_lsb>56</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Faulting control for unprivileged access to any address translated by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>Level 0 Translation faults generated as a result of this field are not counted as TLB misses for performance monitoring. The fault should take the same time to generate, whether the address is present in the TLB or not, to mitigate attacks that use fault timing.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Unprivileged access to any address translated by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> will not generate a fault by this mechanism.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Unprivileged access to any address translated by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> will generate a level 0 Translation fault.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.E0PD1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_E0PD is implemented</fields_condition>
  </field>
  <field id="fieldset_1-56_56-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>56</field_msb>
    <field_lsb>56</field_lsb>
    <rel_range>56</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-55_55-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>E0PD0</field_name>
    <field_msb>55</field_msb>
    <field_lsb>55</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Faulting control for unprivileged access to any address translated by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>Level 0 Translation faults generated as a result of this field are not counted as TLB misses for performance monitoring. The fault should take the same time to generate, whether the address is present in the TLB or not, to mitigate attacks that use fault timing.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Unprivileged access to any address translated by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> will not generate a fault by this mechanism.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Unprivileged access to any address translated by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> will generate a level 0 Translation fault.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.E0PD0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_E0PD is implemented</fields_condition>
  </field>
  <field id="fieldset_1-55_55-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>55</field_msb>
    <field_lsb>55</field_lsb>
    <rel_range>55</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-54_54-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>NFD1</field_name>
    <field_msb>54</field_msb>
    <field_lsb>54</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Non-Fault translation timing Disable when using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
<para>Controls how a TLB miss is reported in response to a non-fault unprivileged access for a virtual address that is translated using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
<para>If SVE is implemented, the affected access types include:</para>
<list type="unordered">
<listitem><content>All accesses due to an SVE non-fault contiguous load instruction.</content>
</listitem><listitem><content>Accesses due to an SVE first-fault gather load instruction that are not for the First active element. Accesses due to an SVE first-fault contiguous load instruction are not affected.</content>
</listitem><listitem><content>Accesses due to prefetch instructions might be affected, but the effect is not architecturally visible.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Does not affect the handling of a TLB miss on accesses translated using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A TLB miss on a virtual address that is translated using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> due to the specified access types causes the access to fail without taking an exception. The amount of time that the failure takes to be handled should not predictively leak whether it was caused by a TLB miss or a Permission fault, to mitigate attacks that use fault timing.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.NFD1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_SVE is implemented</fields_condition>
  </field>
  <field id="fieldset_1-54_54-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>54</field_msb>
    <field_lsb>54</field_lsb>
    <rel_range>54</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-53_53-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>NFD0</field_name>
    <field_msb>53</field_msb>
    <field_lsb>53</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Non-Fault translation timing Disable when using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
<para>Controls how a TLB miss is reported in response to a non-fault unprivileged access for a virtual address that is translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
<para>If SVE is implemented, the affected access types include:</para>
<list type="unordered">
<listitem><content>All accesses due to an SVE non-fault contiguous load instruction.</content>
</listitem><listitem><content>Accesses due to an SVE first-fault gather load instruction that are not for the First active element. Accesses due to an SVE first-fault contiguous load instruction are not affected.</content>
</listitem><listitem><content>Accesses due to prefetch instructions might be affected, but the effect is not architecturally visible.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Does not affect the handling of a TLB miss on accesses translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A TLB miss on a virtual address that is translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> due to the specified access types causes the access to fail without taking an exception. The amount of time that the failure takes to be handled should not predictively leak whether it was caused by a TLB miss or a Permission fault, to mitigate attacks that use fault timing.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.NFD0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_SVE is implemented</fields_condition>
  </field>
  <field id="fieldset_1-53_53-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>53</field_msb>
    <field_lsb>53</field_lsb>
    <rel_range>53</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-52_52-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TBID1</field_name>
    <field_msb>52</field_msb>
    <field_lsb>52</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Controls the use of the top byte of instruction addresses for address matching.</para>
<para>For the purpose of this field, all cache maintenance and address translation instructions that perform address translation are treated as data accesses.</para>
<para>For more information, see <xref linkend="#MDSec.Address_tagging">'Address tagging'</xref>.</para></field_description>
    <field_description order="after">
      <para>This affects addresses where the address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>TCR_EL2.TBI1 applies to Instruction and Data accesses.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>TCR_EL2.TBI1 applies to Data accesses only.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TBID1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_PAuth is implemented</fields_condition>
  </field>
  <field id="fieldset_1-52_52-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>52</field_msb>
    <field_lsb>52</field_lsb>
    <rel_range>52</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-51_51-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TBID0</field_name>
    <field_msb>51</field_msb>
    <field_lsb>51</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Controls the use of the top byte of instruction addresses for address matching.</para>
<para>For more information, see <xref linkend="#MDSec.Address_tagging">'Address tagging'</xref>.</para></field_description>
    <field_description order="after">
      <para>This affects addresses where the address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>TCR_EL2.TBI0 applies to Instruction and Data accesses.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>TCR_EL2.TBI0 applies to Data accesses only.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TBID0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_PAuth is implemented</fields_condition>
  </field>
  <field id="fieldset_1-51_51-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>51</field_msb>
    <field_lsb>51</field_lsb>
    <rel_range>51</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-50_50-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU162</field_name>
    <field_msb>50</field_msb>
    <field_lsb>50</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[62] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD1 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[62] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[62] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD1 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU162 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-50_50-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>50</field_msb>
    <field_lsb>50</field_lsb>
    <rel_range>50</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-49_49-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU161</field_name>
    <field_msb>49</field_msb>
    <field_lsb>49</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[61] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD1 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[61] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[61] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD1 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU161 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-49_49-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>49</field_msb>
    <field_lsb>49</field_lsb>
    <rel_range>49</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-48_48-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU160</field_name>
    <field_msb>48</field_msb>
    <field_lsb>48</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[60] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD1 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[60] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[60] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD1 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU160 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-48_48-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>48</field_msb>
    <field_lsb>48</field_lsb>
    <rel_range>48</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-47_47-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU159</field_name>
    <field_msb>47</field_msb>
    <field_lsb>47</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[59] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD1 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[59] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>, bit[59] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD1 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU159 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-47_47-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>47</field_msb>
    <field_lsb>47</field_lsb>
    <rel_range>47</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-46_46-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU062</field_name>
    <field_msb>46</field_msb>
    <field_lsb>46</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[62] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD0 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[62] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[62] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD0 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU062 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-46_46-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>46</field_msb>
    <field_lsb>46</field_lsb>
    <rel_range>46</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-45_45-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU061</field_name>
    <field_msb>45</field_msb>
    <field_lsb>45</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[61] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD0 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[61] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[61] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD0 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU061 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-45_45-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>45</field_msb>
    <field_lsb>45</field_lsb>
    <rel_range>45</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-44_44-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU060</field_name>
    <field_msb>44</field_msb>
    <field_lsb>44</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[60] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD0 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[60] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[60] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD0 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU060 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-44_44-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>44</field_msb>
    <field_lsb>44</field_lsb>
    <rel_range>44</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-43_43-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HWU059</field_name>
    <field_msb>43</field_msb>
    <field_lsb>43</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Use. Indicates <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> hardware use of bit[59] of the stage 1 translation table Block or Page entry for translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>The Effective value of this field is 0 if the value of TCR_EL2.HPD0 is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[59] of each stage 1 translation table Block or Page entry cannot be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>, bit[59] of each stage 1 translation table Block or Page entry can be used by hardware for an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> purpose if the value of TCR_EL2.HPD0 is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HWU059 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS2 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-43_43-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>43</field_msb>
    <field_lsb>43</field_lsb>
    <rel_range>43</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-42_42-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HPD1</field_name>
    <field_msb>42</field_msb>
    <field_lsb>42</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hierarchical Permission Disables. This affects the hierarchical control bits, APTable, PXNTable, and UXNTable, except NSTable, in the translation tables pointed to by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>When disabled, the permissions are treated as if the bits are zero.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Hierarchical permissions are enabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Hierarchical permissions are disabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HPD1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS is implemented</fields_condition>
  </field>
  <field id="fieldset_1-42_42-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>42</field_msb>
    <field_lsb>42</field_lsb>
    <rel_range>42</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-41_41-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HPD0</field_name>
    <field_msb>41</field_msb>
    <field_lsb>41</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hierarchical Permission Disables. This affects the hierarchical control bits, APTable, PXNTable, and UXNTable, except NSTable, in the translation tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>When disabled, the permissions are treated as if the bits are zero.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Hierarchical permissions are enabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Hierarchical permissions are disabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HPD0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HPDS is implemented</fields_condition>
  </field>
  <field id="fieldset_1-41_41-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>41</field_msb>
    <field_lsb>41</field_lsb>
    <rel_range>41</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-40_40-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HD</field_name>
    <field_msb>40</field_msb>
    <field_lsb>40</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware management of dirty state in stage 1 translations from EL2.</para>
    </field_description>
    <field_description order="after">
      <para>When the Effective value of TCR_EL2.HA is 0, this field behaves as 0 for all purposes other than a direct read of the value of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Stage 1 hardware management of dirty state disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Stage 1 hardware management of dirty state enabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HD == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HAFDBS is implemented</fields_condition>
  </field>
  <field id="fieldset_1-40_40-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>40</field_msb>
    <field_lsb>40</field_lsb>
    <rel_range>40</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-39_39-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>HA</field_name>
    <field_msb>39</field_msb>
    <field_lsb>39</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Hardware Access flag update in stage 1 translations from EL2.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Stage 1 Access flag update disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Stage 1 Access flag update enabled.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.HA == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_HAF is implemented</fields_condition>
  </field>
  <field id="fieldset_1-39_39-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>39</field_msb>
    <field_lsb>39</field_lsb>
    <rel_range>39</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-38_38" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>TBI1</field_name>
    <field_msb>38</field_msb>
    <field_lsb>38</field_lsb>
    <rel_range>38</rel_range>
    <field_description order="before"><para>Top Byte Ignored. Indicates whether the top byte of an address is used for address match for the <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> region, or ignored and used for tagged addresses.</para>
<para>For more information, see <xref linkend="#MDSec.Address_tagging">'Address tagging'</xref>.</para></field_description>
    <field_description order="after"><para>This affects addresses generated at EL0 and EL2 using AArch64 where the address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>. It has an effect whether the EL2&amp;0 translation regime is enabled or not.</para>
<para>If <xref linkend="#FEAT_PAuth">FEAT_PAuth</xref> is implemented and TCR_EL2.TBID1 is 1, then this field only applies to Data accesses.</para>
<para>If the value of TBI1 is 1 and bit [55] of the target address to be stored to the PC is 1, then bits[63:56] of that target address are also set to 1 before the address is stored in the PC, in the following cases:</para>
<list type="unordered">
<listitem><content>A branch or procedure return within EL2</content>
</listitem><listitem><content>If the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1,1}, a branch or procedure return within EL0.</content>
</listitem><listitem><content>An exception taken to EL2.</content>
</listitem><listitem><content>An exception return to EL2.</content>
</listitem><listitem><content>If the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1, 1}, then an exception return to EL0.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Top Byte used in the address calculation.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Top Byte ignored in the address calculation.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TBI1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-37_37" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>TBI0</field_name>
    <field_msb>37</field_msb>
    <field_lsb>37</field_lsb>
    <rel_range>37</rel_range>
    <field_description order="before"><para>Top Byte Ignored. Indicates whether the top byte of an address is used for address match for the <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> region, or ignored and used for tagged addresses.</para>
<para>For more information, see <xref linkend="#MDSec.Address_tagging">'Address tagging'</xref>.</para></field_description>
    <field_description order="after"><para>This affects addresses generated at EL0 and EL2 using AArch64 where the address would be translated by tables pointed to by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>. It has an effect whether the EL2&amp;0 translation regime is enabled or not.</para>
<para>If <xref linkend="#FEAT_PAuth">FEAT_PAuth</xref> is implemented and TCR_EL2.TBID0 is 1, then this field only applies to Data accesses.</para>
<para>If the value of TBI0 is 1 and bit [55] of the target address to be stored to the PC is 0, then bits[63:56] of that target address are also set to 0 before the address is stored in the PC, in the following cases:</para>
<list type="unordered">
<listitem><content>A branch or procedure return within EL2</content>
</listitem><listitem><content>If the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1,1}, a branch or procedure return within EL0.</content>
</listitem><listitem><content>An exception taken to EL2.</content>
</listitem><listitem><content>An exception return to EL2.</content>
</listitem><listitem><content>If the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1, 1}, then an exception return to EL0.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Top Byte used in the address calculation.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Top Byte ignored in the address calculation.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TBI0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-36_36" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>AS</field_name>
    <field_msb>36</field_msb>
    <field_lsb>36</field_lsb>
    <rel_range>36</rel_range>
    <field_description order="before">
      <para>ASID Size.</para>
    </field_description>
    <field_description order="after">
      <para>If the implementation has only 8 bits of ASID, this field is <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>8 bit - the upper 8 bits of <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> and <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> are ignored by hardware for every purpose except reading back the register, and are treated as if they are all zeros for when used for allocation and matching entries in the TLB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>16 bit - the upper 16 bits of <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> and <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> are used for allocation and matching in the TLB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.AS == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-35_35" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>35</field_msb>
    <field_lsb>35</field_lsb>
    <rel_range>35</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-34_32" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>IPS</field_name>
    <field_msb>34</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>34:32</rel_range>
    <field_description order="before">
      <para>Intermediate Physical Address Size.</para>
    </field_description>
    <field_description order="after"><para>The values <binarynumber>0b110</binarynumber> and <binarynumber>0b111</binarynumber> represent different output address sizes depending on implementation choices and translation configuration.</para>
<para>The following table captures the output address size represented by the value <binarynumber>0b110</binarynumber>:</para>
<table><tgroup cols="5"><thead><row><entry>Descriptor Format</entry><entry>ID_AA64MMFR0_EL1.PARange</entry><entry>Translation Granule</entry><entry>DS<sup>1</sup></entry><entry>Represented OA size</entry></row></thead><tbody><row><entry>Any</entry><entry><binarynumber>0b0101</binarynumber></entry><entry>Any</entry><entry>Any</entry><entry>48 bits, 256TB</entry></row><row><entry>VMSAv8-64</entry><entry><binarynumber>0b011x</binarynumber></entry><entry>4KB or 16KB</entry><entry>0</entry><entry>48 bits, 256TB</entry></row><row><entry>VMSAv8-64</entry><entry><binarynumber>0b011x</binarynumber></entry><entry>4KB or 16KB</entry><entry>1</entry><entry>52 bits, 4PB</entry></row><row><entry>VMSAv8-64</entry><entry><binarynumber>0b011x</binarynumber></entry><entry>64KB</entry><entry>N/A</entry><entry>52 bits, 4PB</entry></row><row><entry>VMSAv9-128</entry><entry><binarynumber>0b011x</binarynumber></entry><entry>Any</entry><entry>N/A</entry><entry>52 bits, 4PB</entry></row></tbody></tgroup></table>
<para><sup>1</sup> This column represents the value of <register_link state="AArch64" id="AArch64-tcr_el2.xml">TCR_EL2</register_link>.DS.</para>
<para>The following table captures the output address size represented by the value <binarynumber>0b111</binarynumber>:</para>
<table><tgroup cols="4"><thead><row><entry>Descriptor Format</entry><entry>ID_AA64MMFR0_EL1.PARange</entry><entry>Translation Granule</entry><entry>Represented OA size</entry></row></thead><tbody><row><entry>Any</entry><entry><binarynumber>0b0110</binarynumber></entry><entry>Any</entry><entry>OA size represented by<binarynumber>0b110</binarynumber></entry></row><row><entry>VMSAv8-64</entry><entry><binarynumber>0b0111</binarynumber></entry><entry>Any</entry><entry>OA size represented by<binarynumber>0b110</binarynumber></entry></row><row><entry>VMSAv9-128</entry><entry><binarynumber>0b0111</binarynumber></entry><entry>Any</entry><entry>56 bits, 64PB</entry></row></tbody></tgroup></table>
<para>If 52-bit PA is supported, and the translation table descriptors cannot express an OA larger than 48-bits, then bits[51:48] of every translation table base address are treated as <binarynumber>0b0000</binarynumber> for the stage of translation controlled by <register_link state="AArch64" id="AArch64-tcr_el2.xml">TCR_EL2</register_link>.</para>
<para>If 56-bit PA is supported, and the translation table descriptors cannot express an OA larger than 52-bits, then bits[55:52] of every translation table base address are treated as <binarynumber>0b0000</binarynumber> for the stage of translation controlled by <register_link state="AArch64" id="AArch64-tcr_el2.xml">TCR_EL2</register_link>.</para>
<para>If the output address size represented by this field is larger than the supported PA size expressed in <register_link state="AArch64" id="AArch64-id_aa64mmfr0_el1.xml">ID_AA64MMFR0_EL1</register_link>.PARange, then the output address size is treated as being the same as the supported PA size. Arm strongly recommends that software avoids configuring this field to a value representing an output address size larger than the supported PA size.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b000</field_value>
        <field_value_description>
          <para>32 bits, 4GB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b001</field_value>
        <field_value_description>
          <para>36 bits, 64GB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b010</field_value>
        <field_value_description>
          <para>40 bits, 1TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b011</field_value>
        <field_value_description>
          <para>42 bits, 4TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b100</field_value>
        <field_value_description>
          <para>44 bits, 16TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b101</field_value>
        <field_value_description>
          <para>48 bits, 256TB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b110</field_value>
        <field_value_description>
          <para>52 bits, 4PB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b111</field_value>
        <field_value_description>
          <para>56 bits, 64PB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.IPS == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-31_30" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>TG1</field_name>
    <field_msb>31</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>31:30</rel_range>
    <field_description order="before">
      <para>Granule size for the <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after"><para>Other values are reserved.</para>
<para>If the value is programmed to either a reserved value, or a size that has not been implemented, then the hardware will treat the field as if it has been programmed to an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> choice of the sizes that has been implemented for all purposes other than the value read back from this register.</para>
<para>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the value read back is the value programmed or the value that corresponds to the size chosen.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>16KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>4KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>64KB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TG1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-29_28" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>SH1</field_name>
    <field_msb>29</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>29:28</rel_range>
    <field_description order="before">
      <para>Shareability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>Other values are reserved. The effect of programming this field to a Reserved value is that behavior is <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Non-shareable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Outer Shareable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Inner Shareable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.SH1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-27_26" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>ORGN1</field_name>
    <field_msb>27</field_msb>
    <field_lsb>26</field_lsb>
    <rel_range>27:26</rel_range>
    <field_description order="before">
      <para>Outer cacheability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Normal memory, Outer Non-cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Back Read-Allocate Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Through Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Back Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.ORGN1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-25_24" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>IRGN1</field_name>
    <field_msb>25</field_msb>
    <field_lsb>24</field_lsb>
    <rel_range>25:24</rel_range>
    <field_description order="before">
      <para>Inner cacheability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Normal memory, Inner Non-cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Back Read-Allocate Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Through Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Back Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.IRGN1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-23_23" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>EPD1</field_name>
    <field_msb>23</field_msb>
    <field_lsb>23</field_lsb>
    <rel_range>23</rel_range>
    <field_description order="before">
      <para>Translation table walk disable for translations using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>. This bit controls whether a translation table walk is performed on a TLB miss, for an address that is translated using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>. The encoding of this bit is:</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Perform translation table walks using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A TLB miss on an address that is translated using <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> generates a Translation fault. No translation table walk is performed.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.EPD1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-22_22" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>A1</field_name>
    <field_msb>22</field_msb>
    <field_lsb>22</field_lsb>
    <rel_range>22</rel_range>
    <field_description order="before">
      <para>Selects whether <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> or <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link> defines the ASID. The encoding of this bit is:</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para><register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.ASID defines the ASID.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para><register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>.ASID defines the ASID.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.A1 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-21_16" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>T1SZ</field_name>
    <field_msb>21</field_msb>
    <field_lsb>16</field_lsb>
    <rel_range>21:16</rel_range>
    <field_description order="before"><para>The size offset of the memory region addressed by <register_link state="AArch64" id="AArch64-ttbr1_el2.xml">TTBR1_EL2</register_link>. The region size is 2<sup>(64-T1SZ)</sup> bytes.</para>
<para>The maximum and minimum possible values for T1SZ depend on the level of translation table and the memory translation granule size, as described in the AArch64 Virtual Memory System Architecture chapter.</para>
<note><para>For the 4KB translation granule, if <xref linkend="#FEAT_LPA2">FEAT_LPA2</xref> is implemented, TCR_EL2.DS is 1, and this field is less than 16, the translation table walk begins with a level -1 initial lookup.</para><para>For the 16KB translation granule, if <xref linkend="#FEAT_LPA2">FEAT_LPA2</xref> is implemented, TCR_EL2.DS is 1, and this field is less than 17, the translation table walk begins with a level 0 initial lookup.</para></note></field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.T1SZ == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-15_14" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>TG0</field_name>
    <field_msb>15</field_msb>
    <field_lsb>14</field_lsb>
    <rel_range>15:14</rel_range>
    <field_description order="before">
      <para>Granule size for the <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after"><para>Other values are reserved.</para>
<para>If the value is programmed to either a reserved value, or a size that has not been implemented, then the hardware will treat the field as if it has been programmed to an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> choice of the sizes that has been implemented for all purposes other than the value read back from this register.</para>
<para>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the value read back is the value programmed or the value that corresponds to the size chosen.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>4KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>64KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>16KB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.TG0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-13_12" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>SH0</field_name>
    <field_msb>13</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>13:12</rel_range>
    <field_description order="before">
      <para>Shareability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>Other values are reserved. The effect of programming this field to a Reserved value is that behavior is <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Non-shareable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Outer Shareable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Inner Shareable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.SH0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-11_10" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>ORGN0</field_name>
    <field_msb>11</field_msb>
    <field_lsb>10</field_lsb>
    <rel_range>11:10</rel_range>
    <field_description order="before">
      <para>Outer cacheability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Normal memory, Outer Non-cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Back Read-Allocate Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Through Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Normal memory, Outer Write-Back Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.ORGN0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-9_8" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>IRGN0</field_name>
    <field_msb>9</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>9:8</rel_range>
    <field_description order="before">
      <para>Inner cacheability attribute for memory associated with translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Normal memory, Inner Non-cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Back Read-Allocate Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Through Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>Normal memory, Inner Write-Back Read-Allocate No Write-Allocate Cacheable.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.IRGN0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-7_7" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>EPD0</field_name>
    <field_msb>7</field_msb>
    <field_lsb>7</field_lsb>
    <rel_range>7</rel_range>
    <field_description order="before">
      <para>Translation table walk disable for translations using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>. This bit controls whether a translation table walk is performed on a TLB miss, for an address that is translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>. The encoding of this bit is:</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Perform translation table walks using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A TLB miss on an address that is translated using <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link> generates a Translation fault. No translation table walk is performed.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.EPD0 == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_1-6_6" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>6</field_msb>
    <field_lsb>6</field_lsb>
    <rel_range>6</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-5_0" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>T0SZ</field_name>
    <field_msb>5</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>5:0</rel_range>
    <field_description order="before"><para>The size offset of the memory region addressed by <register_link state="AArch64" id="AArch64-ttbr0_el2.xml">TTBR0_EL2</register_link>. The region size is 2<sup>(64-T0SZ)</sup> bytes.</para>
<para>The maximum and minimum possible values for T0SZ depend on the level of translation table and the memory translation granule size, as described in the AArch64 Virtual Memory System Architecture chapter.</para>
<note><para>For the 4KB translation granule, if <xref linkend="#FEAT_LPA2">FEAT_LPA2</xref> is implemented, TCR_EL2.DS is 1, and this field is less than 16, the translation table walk begins with a level -1 initial lookup.</para><para>For the 16KB translation granule, if <xref linkend="#FEAT_LPA2">FEAT_LPA2</xref> is implemented, TCR_EL2.DS is 1, and this field is less than 17, the translation table walk begins with a level 0 initial lookup.</para></note></field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>TCRMASK_EL2.T0SZ == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <text_after_fields/>
</fields>





<reg_fieldset length="64">
  <fields_condition>When EffectiveHCR_EL2_E2H() == '0'</fields_condition>
  <fieldat id="fieldset_0-63_34" msb="63" lsb="34"/>
  <fieldat id="fieldset_0-33_33-1" msb="33" lsb="33"/>
  <fieldat id="fieldset_0-32_32-1" msb="32" lsb="32"/>
  <fieldat id="fieldset_0-31_31" msb="31" lsb="31"/>
  <fieldat id="fieldset_0-30_30-1" msb="30" lsb="30"/>
  <fieldat id="fieldset_0-29_29-1" msb="29" lsb="29"/>
  <fieldat id="fieldset_0-28_28-1" msb="28" lsb="28"/>
  <fieldat id="fieldset_0-27_27-1" msb="27" lsb="27"/>
  <fieldat id="fieldset_0-26_26-1" msb="26" lsb="26"/>
  <fieldat id="fieldset_0-25_25-1" msb="25" lsb="25"/>
  <fieldat id="fieldset_0-24_24-1" msb="24" lsb="24"/>
  <fieldat id="fieldset_0-23_23" msb="23" lsb="23"/>
  <fieldat id="fieldset_0-22_22-1" msb="22" lsb="22"/>
  <fieldat id="fieldset_0-21_21-1" msb="21" lsb="21"/>
  <fieldat id="fieldset_0-20_20" msb="20" lsb="20"/>
  <fieldat id="fieldset_0-19_19" msb="19" lsb="19"/>
  <fieldat id="fieldset_0-18_16" msb="18" lsb="16"/>
  <fieldat id="fieldset_0-15_14" msb="15" lsb="14"/>
  <fieldat id="fieldset_0-13_12" msb="13" lsb="12"/>
  <fieldat id="fieldset_0-11_10" msb="11" lsb="10"/>
  <fieldat id="fieldset_0-9_8" msb="9" lsb="8"/>
  <fieldat id="fieldset_0-7_6" msb="7" lsb="6"/>
  <fieldat id="fieldset_0-5_0" msb="5" lsb="0"/>
</reg_fieldset>

<reg_fieldset length="64">
  <fields_condition>When EffectiveHCR_EL2_E2H() == '1'</fields_condition>
  <fieldat id="fieldset_1-63_62" msb="63" lsb="62"/>
  <fieldat id="fieldset_1-61_61-1" msb="61" lsb="61"/>
  <fieldat id="fieldset_1-60_60-1" msb="60" lsb="60"/>
  <fieldat id="fieldset_1-59_59-1" msb="59" lsb="59"/>
  <fieldat id="fieldset_1-58_58-1" msb="58" lsb="58"/>
  <fieldat id="fieldset_1-57_57-1" msb="57" lsb="57"/>
  <fieldat id="fieldset_1-56_56-1" msb="56" lsb="56"/>
  <fieldat id="fieldset_1-55_55-1" msb="55" lsb="55"/>
  <fieldat id="fieldset_1-54_54-1" msb="54" lsb="54"/>
  <fieldat id="fieldset_1-53_53-1" msb="53" lsb="53"/>
  <fieldat id="fieldset_1-52_52-1" msb="52" lsb="52"/>
  <fieldat id="fieldset_1-51_51-1" msb="51" lsb="51"/>
  <fieldat id="fieldset_1-50_50-1" msb="50" lsb="50"/>
  <fieldat id="fieldset_1-49_49-1" msb="49" lsb="49"/>
  <fieldat id="fieldset_1-48_48-1" msb="48" lsb="48"/>
  <fieldat id="fieldset_1-47_47-1" msb="47" lsb="47"/>
  <fieldat id="fieldset_1-46_46-1" msb="46" lsb="46"/>
  <fieldat id="fieldset_1-45_45-1" msb="45" lsb="45"/>
  <fieldat id="fieldset_1-44_44-1" msb="44" lsb="44"/>
  <fieldat id="fieldset_1-43_43-1" msb="43" lsb="43"/>
  <fieldat id="fieldset_1-42_42-1" msb="42" lsb="42"/>
  <fieldat id="fieldset_1-41_41-1" msb="41" lsb="41"/>
  <fieldat id="fieldset_1-40_40-1" msb="40" lsb="40"/>
  <fieldat id="fieldset_1-39_39-1" msb="39" lsb="39"/>
  <fieldat id="fieldset_1-38_38" msb="38" lsb="38"/>
  <fieldat id="fieldset_1-37_37" msb="37" lsb="37"/>
  <fieldat id="fieldset_1-36_36" msb="36" lsb="36"/>
  <fieldat id="fieldset_1-35_35" msb="35" lsb="35"/>
  <fieldat id="fieldset_1-34_32" msb="34" lsb="32"/>
  <fieldat id="fieldset_1-31_30" msb="31" lsb="30"/>
  <fieldat id="fieldset_1-29_28" msb="29" lsb="28"/>
  <fieldat id="fieldset_1-27_26" msb="27" lsb="26"/>
  <fieldat id="fieldset_1-25_24" msb="25" lsb="24"/>
  <fieldat id="fieldset_1-23_23" msb="23" lsb="23"/>
  <fieldat id="fieldset_1-22_22" msb="22" lsb="22"/>
  <fieldat id="fieldset_1-21_16" msb="21" lsb="16"/>
  <fieldat id="fieldset_1-15_14" msb="15" lsb="14"/>
  <fieldat id="fieldset_1-13_12" msb="13" lsb="12"/>
  <fieldat id="fieldset_1-11_10" msb="11" lsb="10"/>
  <fieldat id="fieldset_1-9_8" msb="9" lsb="8"/>
  <fieldat id="fieldset_1-7_7" msb="7" lsb="7"/>
  <fieldat id="fieldset_1-6_6" msb="6" lsb="6"/>
  <fieldat id="fieldset_1-5_0" msb="5" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>

      <access_mechanisms>
          


  
    
      <access_permission_text>
        <para>When the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.E2H is 1, without explicit synchronization, accesses from EL2 using the accessor name <value>TCR_EL2</value> or <value>TCR_EL1</value> are not guaranteed to be ordered with respect to accesses using the other accessor name.</para>

      </access_permission_text>
      <access_permission_text>
        <para>If FEAT_SRMASK is implemented, accesses to TCR_EL2 are masked by <register_link state="AArch64" id="AArch64-tcrmask_el2.xml">TCRMASK_EL2</register_link>.</para>
      </access_permission_text>





    
        
        <access_mechanism accessor="MRS TCR_EL2" type="SystemAccessor">
            <encoding>
            <access_instruction>MRS &lt;Xt&gt;, TCR_EL2</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b100"/>
                
                <enc n="CRn" v="0b0010"/>
                
                <enc n="CRm" v="0b0000"/>
                
                <enc n="op2" v="0b010"/>
            </encoding>
            <access_permission>
                <ps name="MRS" sections="1" secttype="access_permission">
                <pstext>
if !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
    X{64}(t) = TCR_EL2();
elsif PSTATE.EL == EL3 then
    X{64}(t) = TCR_EL2();
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MSRregister TCR_EL2" type="SystemAccessor">
            <encoding>
            <access_instruction>MSR TCR_EL2, &lt;Xt&gt;</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b100"/>
                
                <enc n="CRn" v="0b0010"/>
                
                <enc n="CRm" v="0b0000"/>
                
                <enc n="op2" v="0b010"/>
            </encoding>
            <access_permission>
                <ps name="MSRregister" sections="1" secttype="access_permission">
                <pstext>
if !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
    TCR_EL2() = X{64}(t);
elsif PSTATE.EL == EL3 then
    TCR_EL2() = X{64}(t);
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MRS TCR_EL1" type="SystemAccessor">
            <encoding>
            <access_instruction>MRS &lt;Xt&gt;, TCR_EL1</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b000"/>
                
                <enc n="CRn" v="0b0010"/>
                
                <enc n="CRm" v="0b0000"/>
                
                <enc n="op2" v="0b010"/>
            </encoding>
            <access_condition>
When FEAT_VHE is implemented
            </access_condition>
            <access_permission>
                <ps name="MRS" sections="1" secttype="access_permission">
                <pstext>
if !IsFeatureImplemented(FEAT_AA64) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if EL2Enabled() &amp;&amp; HCR_EL2().TRVM == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_FGT) &amp;&amp; (!HaveEL(EL3) || SCR_EL3().FGTEn == '1') &amp;&amp; HFGRTR_EL2().TCR_EL1 == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif EffectiveHCR_EL2_NVx() IN {'111'} then
        X{64}(t) = NVMem(0x120);
    else
        X{64}(t) = TCR_EL1();
    end;
elsif PSTATE.EL == EL2 then
    if ELIsInHost(EL2) then
        X{64}(t) = TCR_EL2();
    else
        X{64}(t) = TCR_EL1();
    end;
elsif PSTATE.EL == EL3 then
    X{64}(t) = TCR_EL1();
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MSRregister TCR_EL1" type="SystemAccessor">
            <encoding>
            <access_instruction>MSR TCR_EL1, &lt;Xt&gt;</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b000"/>
                
                <enc n="CRn" v="0b0010"/>
                
                <enc n="CRm" v="0b0000"/>
                
                <enc n="op2" v="0b010"/>
            </encoding>
            <access_condition>
When FEAT_VHE is implemented
            </access_condition>
            <access_permission>
                <ps name="MSRregister" sections="1" secttype="access_permission">
                <pstext>
if !IsFeatureImplemented(FEAT_AA64) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if EL2Enabled() &amp;&amp; HCR_EL2().TVM == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_FGT) &amp;&amp; (!HaveEL(EL3) || SCR_EL3().FGTEn == '1') &amp;&amp; HFGWTR_EL2().TCR_EL1 == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif EffectiveHCR_EL2_NVx() IN {'111'} then
        NVMem(0x120) = X{64}(t);
    else
        TCR_EL1() = X{64}(t);
    end;
elsif PSTATE.EL == EL2 then
    if ELIsInHost(EL2) then
        TCR_EL2() = X{64}(t);
    else
        TCR_EL1() = X{64}(t);
    end;
elsif PSTATE.EL == EL3 then
    TCR_EL1() = X{64}(t);
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>

      </access_mechanisms>

      <arch_variants>
      </arch_variants>
  </register>
</registers>
<timestamp>2026-03-26 20:27:25</timestamp>
<commit_id>2026-03_rel</commit_id>
</register_page>