<?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>HCR_EL2</reg_short_name>
        
        <reg_long_name>Hypervisor Configuration Register</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-hcr.xml">HCR</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_mapping>
        
  

    

  

    <mapped_name filename="AArch32-hcr2.xml">HCR2</mapped_name>
  <mapped_type>Architectural</mapped_type>
      <mapped_execution_state>AArch32</mapped_execution_state>
    <mapped_from_startbit>63</mapped_from_startbit>
    <mapped_from_endbit>32</mapped_from_endbit>
    <mapped_to_startbit>31</mapped_to_startbit>
    <mapped_to_endbit>0</mapped_to_endbit>
    <mapped_from_rangeset output="63:32">
      <range>
        <msb>63</msb>
        <lsb>32</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>Provides configuration controls for virtualization, including defining whether various operations are trapped to EL2.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
            <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>Unless otherwise stated, the bits in this register behave as if they are 0 for all purposes other than direct reads of the register if EL2 is not enabled in the current Security state.</para>
      </configuration_text>

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

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="64">
  <text_before_fields/>
  <field id="fieldset_0-63_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>TWEDEL</field_name>
    <field_msb>63</field_msb>
    <field_lsb>60</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para>TWE Delay. A 4-bit unsigned number that, when HCR_EL2.TWEDEn is 1, encodes the minimum delay in taking a trap of WFE* caused by HCR_EL2.TWE as 2<sup>(TWEDEL + 8)</sup> cycles.</para>
    </field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When FEAT_TWED is implemented</fields_condition>
  </field>
  <field id="fieldset_0-63_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>63</field_msb>
    <field_lsb>60</field_lsb>
    <rel_range>63: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_0-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>TWEDEn</field_name>
    <field_msb>59</field_msb>
    <field_lsb>59</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>TWE Delay Enable. Enables a configurable delayed trap of the WFE* instruction caused by HCR_EL2.TWE.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The delay for taking the trap is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The delay for taking the trap is at least the number of cycles defined in HCR_EL2.TWEDEL.</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_TWED is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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" rwtype="RES0">
    <field_msb>59</field_msb>
    <field_lsb>59</field_lsb>
    <rel_range>59</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-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>TID5</field_name>
    <field_msb>58</field_msb>
    <field_lsb>58</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap ID group 5. Traps the following register accesses to EL2, when EL2 is enabled in the current Security state:</para>
<para>AArch64:</para>
<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-gmid_el1.xml">GMID_EL1</register_link>.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The specified EL1 accesses to ID group 5 registers are trapped to EL2.</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-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_0-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>DCT</field_name>
    <field_msb>57</field_msb>
    <field_lsb>57</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Default Cacheability Tagging. When HCR_EL2.DC is in effect, controls whether EL1&amp;0 stage 1 translations have the Tagged attribute.</para>
    </field_description>
    <field_description order="after">
      <para>This bit is permitted to be cached in a TLB.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Stage 1 translations do not have the Tagged attribute.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Stage 1 translations have the Tagged attribute.</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-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_0-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>ATA</field_name>
    <field_msb>56</field_msb>
    <field_lsb>56</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Memory tagging enable override:</para>
<list type="unordered">
<listitem><content>Overrides enabling of Memory tagging at EL1 and EL0.</content>
</listitem><listitem><content>If disabled by this control, accesses to the following registers at EL1 are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-gcr_el1.xml">GCR_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-rgsr_el1.xml">RGSR_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-tfsre0_el1.xml">TFSRE0_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-tfsr_el1.xml">TFSR_EL1</register_link>.</content>
</listitem><listitem><content>Accesses with the register name <register_link state="AArch64" id="AArch64-tfsr_el2.xml">TFSR_EL2</register_link> that are not <arm-defined-word>UNDEFINED</arm-defined-word>.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_description order="after"><para>The Effective value of this field is 1 if any of the following are true:</para>
<list type="unordered">
<listitem><content>The Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1, 1}.</content>
</listitem><listitem><content>EL2 is not implemented or not enabled in the current Security state.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>Disables the use of Memory tagging at EL1 and EL0.</para>
<para>The specified registers are trapped to EL2.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>This field has no effect on the use of Memory tagging at EL1 and EL0.</para>
<para>The field does not trap the specified registers to EL2.</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-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_0-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>TTLBOS</field_name>
    <field_msb>55</field_msb>
    <field_lsb>55</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap TLB maintenance instructions that operate on the Outer Shareable domain. Traps execution of those TLB maintenance instructions at EL1 using AArch64 to EL2, when EL2 is enabled in the current Security state. The following instructions are trapped and reported with EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link id="AArch64-tlbi-vmalle1os.xml" state="AArch64">TLBI VMALLE1OS</register_link>, <register_link id="AArch64-tlbi-vae1os.xml" state="AArch64">TLBI VAE1OS</register_link>, <register_link id="AArch64-tlbi-aside1os.xml" state="AArch64">TLBI ASIDE1OS</register_link>,<register_link id="AArch64-tlbi-vaae1os.xml" state="AArch64">TLBI VAAE1OS</register_link>, <register_link id="AArch64-tlbi-vale1os.xml" state="AArch64">TLBI VALE1OS</register_link>, and <register_link id="AArch64-tlbi-vaale1os.xml" state="AArch64">TLBI VAALE1OS</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_TLBIRANGE">FEAT_TLBIRANGE</xref> is implemented, <register_link id="AArch64-tlbi-rvae1os.xml" state="AArch64">TLBI RVAE1OS</register_link>, <register_link id="AArch64-tlbi-rvaae1os.xml" state="AArch64">TLBI RVAAE1OS</register_link>, <register_link id="AArch64-tlbi-rvale1os.xml" state="AArch64">TLBI RVALE1OS</register_link>, and <register_link id="AArch64-tlbi-rvaale1os.xml" state="AArch64">TLBI RVAALE1OS</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_XS">FEAT_XS</xref> is implemented, then the *OSNXS variants are also trapped.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Execution of the specified instructions are trapped to EL2.</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_EVT2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>TTLBIS</field_name>
    <field_msb>54</field_msb>
    <field_lsb>54</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap TLB maintenance instructions that operate on the Inner Shareable domain. Traps execution of those TLB maintenance instructions at EL1 to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, then the following instructions are trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-tlbi-vmalle1is.xml" state="AArch64">TLBI VMALLE1IS</register_link>, <register_link id="AArch64-tlbi-vae1is.xml" state="AArch64">TLBI VAE1IS</register_link>, <register_link id="AArch64-tlbi-aside1is.xml" state="AArch64">TLBI ASIDE1IS</register_link>, <register_link id="AArch64-tlbi-vaae1is.xml" state="AArch64">TLBI VAAE1IS</register_link>, <register_link id="AArch64-tlbi-vale1is.xml" state="AArch64">TLBI VALE1IS</register_link>, <register_link id="AArch64-tlbi-vaale1is.xml" state="AArch64">TLBI VAALE1IS</register_link>, <register_link id="AArch64-tlbi-rvae1is.xml" state="AArch64">TLBI RVAE1IS</register_link>, <register_link id="AArch64-tlbi-rvaae1is.xml" state="AArch64">TLBI RVAAE1IS</register_link>, <register_link id="AArch64-tlbi-rvale1is.xml" state="AArch64">TLBI RVALE1IS</register_link>, and <register_link id="AArch64-tlbi-rvaale1is.xml" state="AArch64">TLBI RVAALE1IS</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, then the following instructions are trapped to EL2 and reported with EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-tlbiallis.xml">TLBIALLIS</register_link>, <register_link state="AArch32" id="AArch32-tlbimvais.xml">TLBIMVAIS</register_link>, <register_link state="AArch32" id="AArch32-tlbiasidis.xml">TLBIASIDIS</register_link>, <register_link state="AArch32" id="AArch32-tlbimvaais.xml">TLBIMVAAIS</register_link>, <register_link state="AArch32" id="AArch32-tlbimvalis.xml">TLBIMVALIS</register_link>, and <register_link state="AArch32" id="AArch32-tlbimvaalis.xml">TLBIMVAALIS</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If <xref linkend="#FEAT_XS">FEAT_XS</xref> is implemented, then the *ISNXS variants are also trapped.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Execution of the specified instructions are trapped to EL2.</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_EVT2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>EnSCXT</field_name>
    <field_msb>53</field_msb>
    <field_lsb>53</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Enable Access to the <register_link state="AArch64" id="AArch64-scxtnum_el1.xml">SCXTNUM_EL1</register_link> and <register_link state="AArch64" id="AArch64-scxtnum_el0.xml">SCXTNUM_EL0</register_link> registers. The defined values are:</para>
    </field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1} and the value of this field is 0, accesses at EL0 are not trapped by this control.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>When EL2 is enabled in the current Security state, EL1 accesses to <register_link state="AArch64" id="AArch64-scxtnum_el0.xml">SCXTNUM_EL0</register_link> and <register_link state="AArch64" id="AArch64-scxtnum_el1.xml">SCXTNUM_EL1</register_link> are disabled, causing an exception to EL2, and the value of the registers to be treated as 0.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1} and EL2 is enabled in the current Security state, EL0 access to <register_link state="AArch64" id="AArch64-scxtnum_el0.xml">SCXTNUM_EL0</register_link> is disabled, causing an exception to EL2, and the value of the register to be treated as 0.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control does not cause accesses to <register_link state="AArch64" id="AArch64-scxtnum_el0.xml">SCXTNUM_EL0</register_link> or <register_link state="AArch64" id="AArch64-scxtnum_el1.xml">SCXTNUM_EL1</register_link> to be trapped.</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_CSV2_2 is implemented or FEAT_CSV2_1p2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>TOCU</field_name>
    <field_msb>52</field_msb>
    <field_lsb>52</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap cache maintenance instructions that operate to the Point of Unification. Traps execution of those cache maintenance instructions at EL0 and EL1 to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>If EL0 is using AArch64, the value of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCI is 1, and the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, then the following instructions at EL0 are trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-ic-ivau.xml" state="AArch64">IC IVAU</register_link>, and <register_link id="AArch64-dc-cvau.xml" state="AArch64">DC CVAU</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch64, then the following instructions at EL1 are trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-ic-ivau.xml" state="AArch64">IC IVAU</register_link>, <register_link id="AArch64-ic-iallu.xml" state="AArch64">IC IALLU</register_link>, and <register_link id="AArch64-dc-cvau.xml" state="AArch64">DC CVAU</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, then the following instructions are trapped at EL1 to EL2 and reported with EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-icimvau.xml">ICIMVAU</register_link>, <register_link state="AArch32" id="AArch32-iciallu.xml">ICIALLU</register_link>, and <register_link state="AArch32" id="AArch32-dccmvau.xml">DCCMVAU</register_link>.</content>
</listitem></list>
</content>
</listitem></list>
<note><para>When <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCI is 0, the trap on execution of instructions at EL0 is higher priority than this control.</para><para>An exception generated because an instruction is <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 is higher priority than this trap to EL2. In addition:</para><list type="unordered"><listitem><content><register_link id="AArch64-ic-ialluis.xml" state="AArch64">IC IALLUIS</register_link> and <register_link id="AArch64-ic-iallu.xml" state="AArch64">IC IALLU</register_link> are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 using AArch64.</content></listitem><listitem><content><register_link state="AArch32" id="AArch32-icimvau.xml">ICIMVAU</register_link>, <register_link state="AArch32" id="AArch32-iciallu.xml">ICIALLU</register_link>, <register_link state="AArch32" id="AArch32-icialluis.xml">ICIALLUIS</register_link>, and <register_link state="AArch32" id="AArch32-dccmvau.xml">DCCMVAU</register_link> are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 using AArch32.</content></listitem></list></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For each of the specified instructions, if the execution of the instruction can be trapped, accesses are trapped to EL2.</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_EVT is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>AMVOFFEN</field_name>
    <field_msb>51</field_msb>
    <field_lsb>51</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Activity Monitors Virtual Offsets Enable.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Virtualization of the Activity Monitors is disabled. Indirect reads of the virtual offset registers are zero.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Virtualization of the Activity Monitors is 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_AMUv1p1 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>TICAB</field_name>
    <field_msb>50</field_msb>
    <field_lsb>50</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap <instruction>ICIALLUIS</instruction> and <instruction>IC IALLUIS</instruction> cache maintenance instructions. Traps execution of those cache maintenance instructions at EL1 to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, then the following instruction is trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-ic-ialluis.xml" state="AArch64">IC IALLUIS</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, then the following instruction is trapped to EL2 and reported with EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-icialluis.xml">ICIALLUIS</register_link>.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For each of the specified instructions, if the execution of the instruction can be trapped, EL1 access is trapped to EL2.</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_EVT is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>TID4</field_name>
    <field_msb>49</field_msb>
    <field_lsb>49</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap ID group 4. Traps the following register accesses to EL2, when EL2 is enabled in the current Security state:</para>
<para>AArch64:</para>
<list type="unordered">
<listitem><content>EL1 reads of <register_link state="AArch64" id="AArch64-ccsidr_el1.xml">CCSIDR_EL1</register_link>, <register_link state="AArch64" id="AArch64-ccsidr2_el1.xml">CCSIDR2_EL1</register_link>, <register_link state="AArch64" id="AArch64-clidr_el1.xml">CLIDR_EL1</register_link>, and <register_link state="AArch64" id="AArch64-csselr_el1.xml">CSSELR_EL1</register_link>.</content>
</listitem><listitem><content>EL1 writes to <register_link state="AArch64" id="AArch64-csselr_el1.xml">CSSELR_EL1</register_link>.</content>
</listitem></list>
<para>AArch32:</para>
<list type="unordered">
<listitem><content>EL1 reads of <register_link state="AArch32" id="AArch32-ccsidr.xml">CCSIDR</register_link>, <register_link state="AArch32" id="AArch32-ccsidr2.xml">CCSIDR2</register_link>, <register_link state="AArch32" id="AArch32-clidr.xml">CLIDR</register_link>, and <register_link state="AArch32" id="AArch32-csselr.xml">CSSELR</register_link>.</content>
</listitem><listitem><content>EL1 writes to <register_link state="AArch32" id="AArch32-csselr.xml">CSSELR</register_link>.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The specified EL1 accesses to ID group 4 registers are trapped to EL2.</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_EVT is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>GPF</field_name>
    <field_msb>48</field_msb>
    <field_lsb>48</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Controls the reporting of Granule protection faults at EL0 and EL1.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause exceptions to be routed from EL0 and EL1 to EL2.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Instruction Abort exceptions and Data Abort exceptions due to GPFs from EL0 and EL1 are routed to EL2.</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_RME is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>FIEN</field_name>
    <field_msb>47</field_msb>
    <field_lsb>47</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Fault Injection Enable. Unless this bit is set to 1, accesses to the <register_link state="AArch64" id="AArch64-erxpfgcdn_el1.xml">ERXPFGCDN_EL1</register_link>, <register_link state="AArch64" id="AArch64-erxpfgctl_el1.xml">ERXPFGCTL_EL1</register_link>, and <register_link state="AArch64" id="AArch64-erxpfgf_el1.xml">ERXPFGF_EL1</register_link> registers from EL1 generate a Trap exception to EL2, when EL2 is enabled in the current Security state, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
    </field_description>
    <field_description order="after"><para>If EL2 is disabled in the current Security state, the Effective value of HCR_EL2.FIEN is 1.</para>
<para>If <register_link state="AArch64" id="AArch64-erridr_el1.xml">ERRIDR_EL1</register_link>.NUM is zero, meaning no error records are implemented, or no error record accessible using System registers is owned by a node that implements the RAS Common Fault Injection Model Extension, then this bit might be <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>Accesses to the specified registers from EL1 are trapped to EL2, when EL2 is enabled in the current Security state.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</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_RASv1p1 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>FWB</field_name>
    <field_msb>46</field_msb>
    <field_lsb>46</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Forced Write-Back. Defines the combined cacheability attributes in a 2 stage translation regime.</para>
    </field_description>
    <field_description order="after"><para>In Secure state, this bit applies to both the Secure stage 2 translation and the Non-secure stage 2 translation.</para>
<para>This bit is permitted to be cached in a TLB.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>When this bit is 0, then the combination of stage 1 and stage 2 translations on memory type and cacheability attributes are as described in the Armv8.0 architecture. For more information, see <xref linkend="#MDSec.Combining_stage_1_and_stage_2_memory_type_attributes">'Combining stage 1 and stage 2 memory type attributes'</xref>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>When this bit is 1, then the encoding of the stage 2 memory type and cacheability attributes in bits[5:2] of the stage 2 Page or Block descriptors are as described in <xref linkend="#MDSec.Stage_2_memory_type_and_Cacheability_attributes_when_FEAT_S2FWB_is_enabled">'Stage 2 memory type and Cacheability attributes when FEAT_S2FWB is enabled'</xref>.</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_S2FWB is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>NV2</field_name>
    <field_msb>45</field_msb>
    <field_lsb>45</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Nested Virtualization. Changes the behaviors of HCR_EL2.{NV1, NV} to provide a mechanism for hardware to transform reads and writes from System registers into reads and writes from memory.</para>
    </field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.NV is 0, the Effective value of this field is 0 and this field is treated as 0 for all purposes other than direct reads and writes of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This bit has no effect on the behavior of HCR_EL2.{NV1, NV}. The behavior of HCR_EL2.{NV1, NV} is as defined for <xref linkend="#FEAT_NV">FEAT_NV</xref>.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Redefines behavior of HCR_EL2{NV1, NV} to enable:</para>
<list type="unordered">
<listitem><content>Transformation of read/writes to registers into read/writes to memory.</content>
</listitem><listitem><content>Redirection of EL2 registers to EL1 registers.</content>
</listitem></list>
<para>Any exception taken from EL1 and taken to EL1 causes <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link>.M[3:2] to be set to <binarynumber>0b10</binarynumber> and not <binarynumber>0b01</binarynumber>.</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_NV2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>AT</field_name>
    <field_msb>44</field_msb>
    <field_lsb>44</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Address Translation. EL1 execution of the following address translation instructions is trapped to EL2, when EL2 is enabled in the current Security state, reported using EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link id="AArch64-at-s1e0r.xml" state="AArch64">AT S1E0R</register_link>, <register_link id="AArch64-at-s1e0w.xml" state="AArch64">AT S1E0W</register_link>, <register_link id="AArch64-at-s1e1r.xml" state="AArch64">AT S1E1R</register_link>, <register_link id="AArch64-at-s1e1w.xml" state="AArch64">AT S1E1W</register_link>, <register_link id="AArch64-at-s1e1rp.xml" state="AArch64">AT S1E1RP</register_link>, and <register_link id="AArch64-at-s1e1wp.xml" state="AArch64">AT S1E1WP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_ATS1A">FEAT_ATS1A</xref> is implemented, <register_link id="AArch64-at-s1e1a.xml" state="AArch64">AT S1E1A</register_link>.</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1 execution of the specified instructions is trapped to EL2.</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_NV is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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_0-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>NV1</field_name>
    <field_msb>43</field_msb>
    <field_lsb>43</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Nested Virtualization.</para>
    </field_description>
    <field_description order="after"><para>If the Effective value of HCR_EL2.NV2 is 1, the Effective value of HCR_EL2.NV1 defines which EL1 register accesses are transformed to loads and stores.</para>
<para>The trapping of EL1 registers caused by other control bits has priority over the transformation of these accesses.</para>
<para>If a register is specified that is not implemented by an implementation, then access to that register are <arm-defined-word>UNDEFINED</arm-defined-word>.</para>
<para>For the list of registers affected, see <xref linkend="#MDSec.Enhanced_support_for_nested_virtualization">'Enhanced support for nested virtualization'</xref>.</para>
<para>If the Effective value of HCR_EL2.{NV1, NV} is {0, 1}, any exception taken from EL1, and taken to EL1, causes the <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link>.M[3:2] to be set to <binarynumber>0b10</binarynumber>, and not <binarynumber>0b01</binarynumber>.</para>
<para>If the Effective value of HCR_EL2.{NV1, NV} is {1, 1}, then:</para>
<list type="unordered">
<listitem><content>The EL1 translation table Block and Page descriptors:<list type="unordered">
<listitem><content>Bit[54] holds the PXN instead of the UXN.</content>
</listitem><listitem><content>The Effective value of UXN is 0.</content>
</listitem><listitem><content>Bit[53] is <arm-defined-word>RES0</arm-defined-word>.</content>
</listitem><listitem><content>Bit[6] is treated as 0 regardless of the actual value.</content>
</listitem></list>
</content>
</listitem><listitem><content>If Hierarchical Permissions are enabled, the EL1 translation table Table descriptors are as follows:<list type="unordered">
<listitem><content>Bit[61] is treated as 0 regardless of the actual value.</content>
</listitem><listitem><content>Bit[60] holds the PXNTable instead of the UXNTable.</content>
</listitem><listitem><content>Bit[59] is <arm-defined-word>RES0</arm-defined-word>.</content>
</listitem></list>
</content>
</listitem><listitem><content>When executing at EL1, the Effective value of PSTATE.PAN is 0 for all purposes except reading the value of the bit.</content>
</listitem><listitem><content>When executing at EL1, the Effective value of PSTATE.UAO is 1 for all purposes except reading the value of the bit.</content>
</listitem></list>
<para>If the Effective value of HCR_EL2.{NV1, NV} are {1, 0}, then the behavior is a <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word> choice of:</para>
<list type="unordered">
<listitem><content>Behaving as if the Effective value of HCR_EL2.{NV1, NV} is {1, 1} for all purposes other than reading back the value of the HCR_EL2.NV bit.</content>
</listitem><listitem><content>Behaving as if the Effective value of HCR_EL2.{NV1, NV} is {0, 0} for all purposes other than reading back the value of the HCR_EL2.NV1 bit.</content>
</listitem><listitem><content>Behaving with regard to the Effective value of HCR_EL2.{NV1, NV} behavior as defined in the rest of this description.</content>
</listitem></list>
<para>This bit is permitted to be cached in a TLB.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>If the Effective value of HCR_EL2.{NV2, NV} is {1, 1}, accesses executed from EL1 to implemented EL12, EL02, or EL2 registers are transformed to loads and stores.</para>
<para>If the Effective value of HCR_EL2.{NV2, NV} is not {1, 1}, this control does not cause any instructions to be trapped.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>If the Effective value of HCR_EL2.NV2 is 1, accesses executed from EL1 to implemented EL2 registers are transformed to loads and stores.</para>
<para>If the Effective value of HCR_EL2.NV2 is 0, EL1 accesses to <register_link state="AArch64" id="AArch64-vbar_el1.xml">VBAR_EL1</register_link>, <register_link state="AArch64" id="AArch64-elr_el1.xml">ELR_EL1</register_link>, <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link>, and, when <xref linkend="#FEAT_CSV2_2">FEAT_CSV2_2</xref> or <xref linkend="#FEAT_CSV2_1p2">FEAT_CSV2_1p2</xref> is implemented, <register_link state="AArch64" id="AArch64-scxtnum_el1.xml">SCXTNUM_EL1</register_link>, are trapped to EL2, when EL2 is enabled in the current Security state, and are reported using EC syndrome value <hexnumber>0x18</hexnumber>.</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_NV2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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" reserved_type="RES0">
    <field_name>NV1</field_name>
    <field_msb>43</field_msb>
    <field_lsb>43</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Nested Virtualization. EL1 accesses to certain registers are trapped to EL2, when EL2 is enabled in the current Security state.</para>
    </field_description>
    <field_description order="after"><para>If the Effective value of HCR_EL2.{NV1, NV} is {0, 1}, then the following effects also apply:</para>
<list type="unordered">
<listitem><content>Any exception taken from EL1, and taken to EL1, causes the <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link>.M[3:2] to be set to <binarynumber>0b10</binarynumber>, and not <binarynumber>0b01</binarynumber>.</content>
</listitem></list>
<para>If the Effective value of HCR_EL2.{NV1, NV} is {1, 1}, then the following effects also apply:</para>
<list type="unordered">
<listitem><content>The EL1 translation table Block and Page descriptors:<list type="unordered">
<listitem><content>Bit[54] holds the PXN instead of the UXN.</content>
</listitem><listitem><content>The Effective value of UXN is 0.</content>
</listitem><listitem><content>Bit[53] is <arm-defined-word>RES0</arm-defined-word>.</content>
</listitem><listitem><content>Bit[6] is treated as 0 regardless of the actual value.</content>
</listitem></list>
</content>
</listitem><listitem><content>If Hierarchical Permissions are enabled, the EL1 translation table Table descriptors are as follows:<list type="unordered">
<listitem><content>Bit[61] is treated as 0 regardless of the actual value.</content>
</listitem><listitem><content>Bit[60] holds the PXNTable instead of the UXNTable.</content>
</listitem><listitem><content>Bit[59] is <arm-defined-word>RES0</arm-defined-word>.</content>
</listitem></list>
</content>
</listitem><listitem><content>When executing at EL1, the Effective value of PSTATE.PAN is 0 for all purposes except reading the value of the bit.</content>
</listitem><listitem><content>When executing at EL1, the Effective value of PSTATE.UAO is 1 for all purposes except reading the value of the bit.</content>
</listitem></list>
<para>If the Effective value of HCR_EL2.{NV1, NV} is {1, 0}, then the behavior is a <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word> choice of:</para>
<list type="unordered">
<listitem><content>Behaving as if the Effective value of HCR_EL2.{NV1, NV} is {1, 1} for all purposes other than reading back the value of the HCR_EL2.NV bit.</content>
</listitem><listitem><content>Behaving as if the Effective value of HCR_EL2.{NV1, NV} is {0, 0} for all purposes other than reading back the value of the HCR_EL2.NV1 bit.</content>
</listitem><listitem><content>Behaving with regard to the Effective value of HCR_EL2.{NV1, NV} behavior as defined in the rest of this description.</content>
</listitem></list>
<para>This bit is permitted to be cached in a TLB.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1 accesses to <register_link state="AArch64" id="AArch64-vbar_el1.xml">VBAR_EL1</register_link>, <register_link state="AArch64" id="AArch64-elr_el1.xml">ELR_EL1</register_link>, <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link>, and, when <xref linkend="#FEAT_CSV2_2">FEAT_CSV2_2</xref> or <xref linkend="#FEAT_CSV2_1p2">FEAT_CSV2_1p2</xref> is implemented, <register_link state="AArch64" id="AArch64-scxtnum_el1.xml">SCXTNUM_EL1</register_link>, are trapped to EL2, when EL2 is enabled in the current Security state, and are reported using EC syndrome value <hexnumber>0x18</hexnumber>.</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_NV is implemented</fields_condition>
  </field>
  <field id="fieldset_0-43_43-3" 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_0-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>NV</field_name>
    <field_msb>42</field_msb>
    <field_lsb>42</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Nested Virtualization.</para>
<para>When the Effective value of HCR_EL2.NV2 is 1, redefines register accesses so that:</para>
<list type="unordered">
<listitem><content>Instructions accessing the Special purpose registers <register_link state="AArch64" id="AArch64-spsr_el2.xml">SPSR_EL2</register_link> and <register_link state="AArch64" id="AArch64-elr_el2.xml">ELR_EL2</register_link> instead access <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link> and <register_link state="AArch64" id="AArch64-elr_el1.xml">ELR_EL1</register_link> respectively.</content>
</listitem><listitem><content>Instructions accessing the System registers <register_link state="AArch64" id="AArch64-esr_el2.xml">ESR_EL2</register_link> and <register_link state="AArch64" id="AArch64-far_el2.xml">FAR_EL2</register_link> instead access <register_link state="AArch64" id="AArch64-esr_el1.xml">ESR_EL1</register_link> and <register_link state="AArch64" id="AArch64-far_el1.xml">FAR_EL1</register_link>.</content>
</listitem></list>
<para>When the Effective value of HCR_EL2.NV2 is 0, traps functionality that is permitted at EL2 and would be <arm-defined-word>UNDEFINED</arm-defined-word> at EL1 if this field was 0, when EL2 is enabled in the current Security state. This applies to the following operations:</para>
<list type="unordered">
<listitem><content>EL1 accesses to Special-purpose registers that are not <arm-defined-word>UNDEFINED</arm-defined-word> at EL2.</content>
</listitem><listitem><content>EL1 accesses to System registers that are not <arm-defined-word>UNDEFINED</arm-defined-word> at EL2.</content>
</listitem><listitem><content>Execution of EL2 or EL1 translation regime address translation and TLB maintenance instructions for EL2 and above.</content>
</listitem></list></field_description>
    <field_description order="after"><para>When the Effective value of HCR_EL2.NV2 is 0, then:</para>
<list type="unordered">
<listitem><content>The System or Special-purpose registers for which accesses are trapped and reported using EC syndrome value <hexnumber>0x18</hexnumber> are as follows:<list type="unordered">
<listitem><content>Registers accessed using MRS or MSR with a name ending in _EL2, except the following:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-sp_el2.xml">SP_EL2</register_link>.</content>
</listitem><listitem><content>If FEAT_MEC is implemented, <register_link state="AArch64" id="AArch64-mecid_a0_el2.xml">MECID_A0_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecid_a1_el2.xml">MECID_A1_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecid_p0_el2.xml">MECID_P0_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecid_p1_el2.xml">MECID_P1_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecidr_el2.xml">MECIDR_EL2</register_link>, <register_link state="AArch64" id="AArch64-vmecid_a_el2.xml">VMECID_A_EL2</register_link>, and <register_link state="AArch64" id="AArch64-vmecid_p_el2.xml">VMECID_P_EL2</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>Registers accessed using MRS or MSR with a name ending in _EL12.</content>
</listitem><listitem><content>Registers accessed using MRS or MSR with a name ending in _EL02.</content>
</listitem><listitem><content>Special-purpose registers <register_link state="AArch32" id="AArch32-spsr_irq.xml">SPSR_irq</register_link>, <register_link state="AArch32" id="AArch32-spsr_abt.xml">SPSR_abt</register_link>, <register_link state="AArch32" id="AArch32-spsr_und.xml">SPSR_und</register_link>, and <register_link state="AArch32" id="AArch32-spsr_fiq.xml">SPSR_fiq</register_link>, accessed using MRS or MSR.</content>
</listitem><listitem><content>Special-purpose register <register_link state="AArch64" id="AArch64-sp_el1.xml">SP_EL1</register_link> accessed using the dedicated MRS or MSR instruction.</content>
</listitem></list>
</content>
</listitem><listitem><content>The instructions for which the execution is trapped and reported using EC syndrome value <hexnumber>0x18</hexnumber> are as follows:<list type="unordered">
<listitem><content>EL2 translation regime Address Translation instructions and TLB maintenance instructions.</content>
</listitem><listitem><content>EL1 translation regime Address Translation instructions and TLB maintenance instructions that are accessible only from EL2 and EL3.</content>
</listitem></list>
</content>
</listitem><listitem><content>The instructions for which the execution is trapped as follows:<list type="unordered">
<listitem><content>SMC in an implementation that does not include EL3 and when HCR_EL2.TSC is 1. HCR_EL2.TSC bit is not <arm-defined-word>RES0</arm-defined-word> in this case. This is reported using EC syndrome value <hexnumber>0x17</hexnumber>.</content>
</listitem><listitem><content>The ERET, ERETAA, and ERETAB instructions, reported using EC syndrome value <hexnumber>0x1A</hexnumber>.</content>
</listitem></list>
</content>
</listitem></list>
<note><para>The priority of this trap is higher than the priority of the HCR_EL2.API trap. If both of these bits are set so that EL1 execution of an ERETAA or ERETAB instruction is trapped to EL2, then the syndrome reported is <hexnumber>0x1A</hexnumber>.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>When this bit is set to 0, then the PE behaves as if the Effective value of HCR_EL2.NV2 is 0 for all purposes other than reading this register. This control does not cause any instructions to be trapped.</para>
<para>When the Effective value of HCR_EL2.NV2 is 1, no <xref linkend="#FEAT_NV2">FEAT_NV2</xref> functionality is implemented.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>When the Effective value of HCR_EL2.NV2 is 0, EL1 accesses to the specified registers or the execution of the specified instructions are trapped to EL2, when EL2 is enabled in the current Security state. EL1 read accesses to the <register_link state="AArch64" id="AArch64-currentel.xml">CurrentEL</register_link> register return a value of <hexnumber>0x2</hexnumber>.</para>
<para>When the Effective value of HCR_EL2.NV2 is 1, this control redefines EL1 register accesses so that instructions accessing <register_link state="AArch64" id="AArch64-spsr_el2.xml">SPSR_EL2</register_link>, <register_link state="AArch64" id="AArch64-elr_el2.xml">ELR_EL2</register_link>, <register_link state="AArch64" id="AArch64-esr_el2.xml">ESR_EL2</register_link>, and <register_link state="AArch64" id="AArch64-far_el2.xml">FAR_EL2</register_link> instead access <register_link state="AArch64" id="AArch64-spsr_el1.xml">SPSR_EL1</register_link>, <register_link state="AArch64" id="AArch64-elr_el1.xml">ELR_EL1</register_link>, <register_link state="AArch64" id="AArch64-esr_el1.xml">ESR_EL1</register_link>, and <register_link state="AArch64" id="AArch64-far_el1.xml">FAR_EL1</register_link> respectively.</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_NV2 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-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" reserved_type="RES0">
    <field_name>NV</field_name>
    <field_msb>42</field_msb>
    <field_lsb>42</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Nested Virtualization. Traps functionality that is permitted at EL2 and would be <arm-defined-word>UNDEFINED</arm-defined-word> at EL1 if this field was 0, when EL2 is enabled in the current Security state. This applies to the following operations:</para>
<list type="unordered">
<listitem><content>EL1 accesses to Special-purpose registers that are not <arm-defined-word>UNDEFINED</arm-defined-word> at EL2.</content>
</listitem><listitem><content>EL1 accesses to System registers that are not <arm-defined-word>UNDEFINED</arm-defined-word> at EL2.</content>
</listitem><listitem><content>Execution of EL2 or EL1 translation regime address translation and TLB maintenance instructions for EL2 and above.</content>
</listitem></list></field_description>
    <field_description order="after"><para>The System or Special-purpose registers for which accesses are trapped and reported using EC syndrome value <hexnumber>0x18</hexnumber> are as follows:</para>
<list type="unordered">
<listitem><content>Registers accessed using MRS or MSR with a name ending in _EL2, except the following:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-sp_el2.xml">SP_EL2</register_link>.</content>
</listitem><listitem><content>If FEAT_MEC is implemented, <register_link state="AArch64" id="AArch64-mecid_a0_el2.xml">MECID_A0_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecid_a1_el2.xml">MECID_A1_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecid_p0_el2.xml">MECID_P0_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecid_p1_el2.xml">MECID_P1_EL2</register_link>, <register_link state="AArch64" id="AArch64-mecidr_el2.xml">MECIDR_EL2</register_link>, <register_link state="AArch64" id="AArch64-vmecid_a_el2.xml">VMECID_A_EL2</register_link>, and <register_link state="AArch64" id="AArch64-vmecid_p_el2.xml">VMECID_P_EL2</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>Registers accessed using MRS or MSR with a name ending in _EL12.</content>
</listitem><listitem><content>Registers accessed using MRS or MSR with a name ending in _EL02.</content>
</listitem><listitem><content>Special-purpose registers <register_link state="AArch32" id="AArch32-spsr_irq.xml">SPSR_irq</register_link>, <register_link state="AArch32" id="AArch32-spsr_abt.xml">SPSR_abt</register_link>, <register_link state="AArch32" id="AArch32-spsr_und.xml">SPSR_und</register_link>, and <register_link state="AArch32" id="AArch32-spsr_fiq.xml">SPSR_fiq</register_link>, accessed using MRS or MSR.</content>
</listitem><listitem><content>Special-purpose register <register_link state="AArch64" id="AArch64-sp_el1.xml">SP_EL1</register_link> accessed using the dedicated MRS or MSR instruction.</content>
</listitem></list>
<para>The instructions for which the execution is trapped and reported using EC syndrome value <hexnumber>0x18</hexnumber> are as follows:</para>
<list type="unordered">
<listitem><content>EL2 translation regime Address Translation instructions and TLB maintenance instructions.</content>
</listitem><listitem><content>EL1 translation regime Address Translation instructions and TLB maintenance instructions that are accessible only from EL2 and EL3.</content>
</listitem></list>
<para>The execution of the ERET, ERETAA, and ERETAB instructions are trapped and reported using EC syndrome value <hexnumber>0x1A</hexnumber>.</para>
<note><para>The priority of this trap is higher than the priority of the HCR_EL2.API trap. If both of these bits are set so that EL1 execution of an ERETAA or ERETAB instruction is trapped to EL2, then the syndrome reported is <hexnumber>0x1A</hexnumber>.</para></note><para>The execution of the SMC instructions in an implementation that does not include EL3 and when HCR_EL2.TSC is 1 are trapped and reported using EC syndrome value <hexnumber>0x17</hexnumber>. HCR_EL2.TSC bit is not <arm-defined-word>RES0</arm-defined-word> in this case.</para>
<para>This bit is permitted to be cached in a TLB.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1 accesses to the specified registers or the execution of the specified instructions are trapped to EL2, when EL2 is enabled in the current Security state. EL1 read accesses to the <register_link state="AArch64" id="AArch64-currentel.xml">CurrentEL</register_link> register return a value of <hexnumber>0x2</hexnumber>.</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_NV is implemented</fields_condition>
  </field>
  <field id="fieldset_0-42_42-3" 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_0-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>API</field_name>
    <field_msb>41</field_msb>
    <field_lsb>41</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Controls the use of instructions related to Pointer Authentication:</para>
<list type="unordered">
<listitem><content>PACGA.</content>
</listitem><listitem><content>AUTDA, AUTDB, AUTDZA, AUTDZB, AUTIA, AUTIA1716, AUTIASP, AUTIAZ, AUTIB, AUTIB1716, AUTIBSP, AUTIBZ, AUTIZA, AUTIZB.</content>
</listitem><listitem><content>PACDA, PACDB, PACDZA, PACDZB, PACIA, PACIA1716, PACIASP, PACIAZ, PACIB, PACIB1716, PACIBSP, PACIBZ, PACIZA, PACIZB.</content>
</listitem><listitem><content>RETAA, RETAB, BRAA, BRAB, BLRAA, BLRAB, BRAAZ, BRABZ, BLRAAZ, BLRABZ.</content>
</listitem><listitem><content>ERETAA, ERETAB, LDRAA, and LDRAB.</content>
</listitem><listitem><content>When <xref linkend="#FEAT_PAuth_LR">FEAT_PAuth_LR</xref> is implemented, AUTIASPPC, AUTIASPPCR, AUTIA171615, AUTIBSPPC, AUTIBSPPCR, AUTIB171615, PACIASPPC, PACNBIASPPC, PACIA171615, PACIBSPPC, PACNBIBSPPC, PACIB171615, RETAASPPC, RETAASPPCR, RETABSPPC, RETABSPPCR.</content>
</listitem></list>
<para>This field is ignored if the instruction is disabled as a result of the SCTLR_ELx.{EnIB, EnIA, EnDA, EnDB} fields.</para></field_description>
    <field_description order="after">
      <para>If <xref linkend="#FEAT_PAuth">FEAT_PAuth</xref> is implemented but EL2 is not implemented or is disabled in the current Security state, the system behaves as if this bit is 1.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>The instructions related to Pointer Authentication are trapped to EL2 and reported using EC syndrome value <hexnumber>0x09</hexnumber>, when EL2 is enabled in the current Security state and the instructions are enabled for the EL1&amp;0 translation regime, from:</para>
<list type="unordered">
<listitem><content>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, EL0.</para>
</content>
</listitem><listitem><content>
<para>EL1.</para>
</content>
</listitem></list>
<para>If the Effective value of HCR_EL2.NV is 1, the HCR_EL2.NV trap takes precedence over the HCR_EL2.API trap for the <instruction>ERETAA</instruction> and <instruction>ERETAB</instruction> instructions.</para>
<para>If EL2 is implemented and enabled in the current Security state and the Effective value of <register_link state="AArch64" id="AArch64-hfgitr_el2.xml">HFGITR_EL2</register_link>.ERET is 1, execution at EL1 using AArch64 of <instruction>ERETAA</instruction> or <instruction>ERETAB</instruction> instructions is reported with EC syndrome value <hexnumber>0x1A</hexnumber> with its associated ISS field, as the fine-grained trap has higher priority than the trap enabled by HCR_EL2.API == 0.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</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-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_0-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>APK</field_name>
    <field_msb>40</field_msb>
    <field_lsb>40</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap registers holding "key" values for Pointer Authentication. Traps accesses to the following registers from EL1 to EL2, when EL2 is enabled in the current Security state, reported using EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-apiakeylo_el1.xml">APIAKeyLo_EL1</register_link>, <register_link state="AArch64" id="AArch64-apiakeyhi_el1.xml">APIAKeyHi_EL1</register_link>, <register_link state="AArch64" id="AArch64-apibkeylo_el1.xml">APIBKeyLo_EL1</register_link>, <register_link state="AArch64" id="AArch64-apibkeyhi_el1.xml">APIBKeyHi_EL1</register_link>, <register_link state="AArch64" id="AArch64-apdakeylo_el1.xml">APDAKeyLo_EL1</register_link>, <register_link state="AArch64" id="AArch64-apdakeyhi_el1.xml">APDAKeyHi_EL1</register_link>, <register_link state="AArch64" id="AArch64-apdbkeylo_el1.xml">APDBKeyLo_EL1</register_link>, <register_link state="AArch64" id="AArch64-apdbkeyhi_el1.xml">APDBKeyHi_EL1</register_link>, <register_link state="AArch64" id="AArch64-apgakeylo_el1.xml">APGAKeyLo_EL1</register_link>, and <register_link state="AArch64" id="AArch64-apgakeyhi_el1.xml">APGAKeyHi_EL1</register_link>.</content>
</listitem></list></field_description>
    <field_description order="after">
      <note>
        <para>If <xref linkend="#FEAT_PAuth">FEAT_PAuth</xref> is implemented but EL2 is not implemented or is disabled in the current Security state, the system behaves as if this bit is 1.</para>
      </note>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Access to the registers holding "key" values for pointer authentication from EL1 are trapped to EL2, when EL2 is enabled in the current Security state.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</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-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_0-39_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" rwtype="RES0">
    <field_msb>39</field_msb>
    <field_lsb>38</field_lsb>
    <rel_range>39:38</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-37_37-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>TEA</field_name>
    <field_msb>37</field_msb>
    <field_lsb>37</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Route synchronous External abort exceptions to EL2.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Synchronous External abort exceptions are unaffected by this mechanism. That is, synchronous External abort exceptions are not taken to EL2 unless routed to EL2 by another control.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>When executing at Exception levels below EL2, and EL2 is enabled in the current Security state, synchronous External abort exceptions are taken to EL2, unless they are routed to EL3.</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_RAS is implemented</fields_condition>
  </field>
  <field id="fieldset_0-37_37-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>37</field_msb>
    <field_lsb>37</field_lsb>
    <rel_range>37</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-36_36-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>TERR</field_name>
    <field_msb>36</field_msb>
    <field_lsb>36</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Trap accesses of Error Record registers. Enables a trap to EL2 on accesses of Error Record registers.</para>
    </field_description>
    <field_description order="after"><para>In AArch64 state, the instructions affected by this control are:</para>
<list type="unordered">
<listitem><content><instruction>MRS</instruction> and <instruction>MSR</instruction> accesses to <register_link state="AArch64" id="AArch64-errselr_el1.xml">ERRSELR_EL1</register_link>, <register_link state="AArch64" id="AArch64-erxaddr_el1.xml">ERXADDR_EL1</register_link>, <register_link state="AArch64" id="AArch64-erxctlr_el1.xml">ERXCTLR_EL1</register_link>, <register_link state="AArch64" id="AArch64-erxmisc0_el1.xml">ERXMISC0_EL1</register_link>, <register_link state="AArch64" id="AArch64-erxmisc1_el1.xml">ERXMISC1_EL1</register_link>, and <register_link state="AArch64" id="AArch64-erxstatus_el1.xml">ERXSTATUS_EL1</register_link>.</content>
</listitem><listitem><content><instruction>MRS</instruction> accesses to <register_link state="AArch64" id="AArch64-erridr_el1.xml">ERRIDR_EL1</register_link> and <register_link state="AArch64" id="AArch64-erxfr_el1.xml">ERXFR_EL1</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_RASv1p1">FEAT_RASv1p1</xref> is implemented, <instruction>MRS</instruction> and <instruction>MSR</instruction> accesses to <register_link state="AArch64" id="AArch64-erxmisc2_el1.xml">ERXMISC2_EL1</register_link> and <register_link state="AArch64" id="AArch64-erxmisc3_el1.xml">ERXMISC3_EL1</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_RASv2">FEAT_RASv2</xref> is implemented, <instruction>MRS</instruction> accesses to <register_link state="AArch64" id="AArch64-erxgsr_el1.xml">ERXGSR_EL1</register_link>.</content>
</listitem></list>
<para>In AArch32 state, the instructions affected by this control are:</para>
<list type="unordered">
<listitem><content><instruction>MRC</instruction> and <instruction>MCR</instruction> accesses to <register_link state="AArch32" id="AArch32-errselr.xml">ERRSELR</register_link>, <register_link state="AArch32" id="AArch32-erxaddr.xml">ERXADDR</register_link>, <register_link state="AArch32" id="AArch32-erxaddr2.xml">ERXADDR2</register_link>, <register_link state="AArch32" id="AArch32-erxctlr.xml">ERXCTLR</register_link>, <register_link state="AArch32" id="AArch32-erxctlr2.xml">ERXCTLR2</register_link>, <register_link state="AArch32" id="AArch32-erxmisc0.xml">ERXMISC0</register_link>, <register_link state="AArch32" id="AArch32-erxmisc1.xml">ERXMISC1</register_link>, <register_link state="AArch32" id="AArch32-erxmisc2.xml">ERXMISC2</register_link>, <register_link state="AArch32" id="AArch32-erxmisc3.xml">ERXMISC3</register_link>, and <register_link state="AArch32" id="AArch32-erxstatus.xml">ERXSTATUS</register_link>.</content>
</listitem><listitem><content><instruction>MRC</instruction> accesses to <register_link state="AArch32" id="AArch32-erridr.xml">ERRIDR</register_link>, <register_link state="AArch32" id="AArch32-erxfr.xml">ERXFR</register_link>, and <register_link state="AArch32" id="AArch32-erxfr2.xml">ERXFR2</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_RASv1p1">FEAT_RASv1p1</xref> is implemented, <instruction>MRC</instruction> and <instruction>MCR</instruction> accesses to <register_link state="AArch32" id="AArch32-erxmisc4.xml">ERXMISC4</register_link>, <register_link state="AArch32" id="AArch32-erxmisc5.xml">ERXMISC5</register_link>, <register_link state="AArch32" id="AArch32-erxmisc6.xml">ERXMISC6</register_link>, and <register_link state="AArch32" id="AArch32-erxmisc7.xml">ERXMISC7</register_link>.</content>
</listitem></list>
<para>Unless the instruction generates a higher priority exception, trapped instructions generate an exception to EL2.</para>
<para>Trapped AArch64 instructions are reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
<para>Trapped AArch32 instructions are reported using EC syndrome value <hexnumber>0x03</hexnumber>.</para>
<para>Accessing this field has the following behavior:</para>
<list type="unordered">
<listitem><content>This field is permitted to be <arm-defined-word>RES0</arm-defined-word> if all of the following are true:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-errselr_el1.xml">ERRSELR_EL1</register_link> and all ERX* registers are implemented as <arm-defined-word>UNDEFINED</arm-defined-word> or RAZ/WI.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-erridr_el1.xml">ERRIDR_EL1</register_link>.NUM is zero.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Accesses of the specified Error Record registers are not trapped by this mechanism.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Accesses of the specified Error Record registers at EL1 are trapped to EL2, unless the instruction generates a higher priority exception.</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_RAS is implemented</fields_condition>
  </field>
  <field id="fieldset_0-36_36-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>36</field_msb>
    <field_lsb>36</field_lsb>
    <rel_range>36</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-35_35-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>TLOR</field_name>
    <field_msb>35</field_msb>
    <field_lsb>35</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Trap LOR registers. Traps Non-secure and Realm EL1 accesses to <register_link state="AArch64" id="AArch64-lorsa_el1.xml">LORSA_EL1</register_link>, <register_link state="AArch64" id="AArch64-lorea_el1.xml">LOREA_EL1</register_link>, <register_link state="AArch64" id="AArch64-lorn_el1.xml">LORN_EL1</register_link>, <register_link state="AArch64" id="AArch64-lorc_el1.xml">LORC_EL1</register_link>, and <register_link state="AArch64" id="AArch64-lorid_el1.xml">LORID_EL1</register_link> registers to EL2.</para>
    </field_description>
    <field_description order="after">
      <para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Non-secure and Realm EL1 accesses to the LOR registers are trapped to EL2.</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_LOR is implemented</fields_condition>
  </field>
  <field id="fieldset_0-35_35-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>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>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-34_34-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>E2H</field_name>
    <field_msb>34</field_msb>
    <field_lsb>34</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>EL2 Host. Enables a configuration where a Host Operating System is running at EL2, and the Host Operating System's applications are running at EL0.</para>
    </field_description>
    <field_description order="after"><para>For information on the behavior of this bit see <xref linkend="#MDSec.Behavior_of_HCR_EL2_E2H">'Behavior of HCR_EL2.E2H'</xref>.</para>
<para>When <xref linkend="#FEAT_E2H0">FEAT_E2H0</xref> is not implemented, this field is <arm-defined-word>RES1</arm-defined-word> and behaves as if it is 1 for all purposes other than a direct read.</para>
<para>This bit is permitted to be cached in a TLB.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The facilities to support a Host Operating System at EL2 are disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The facilities to support a Host Operating System at EL2 are 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_VHE is implemented</fields_condition>
  </field>
  <field id="fieldset_0-34_34-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>34</field_msb>
    <field_lsb>34</field_lsb>
    <rel_range>34</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-33_33" 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>ID</field_name>
    <field_msb>33</field_msb>
    <field_lsb>33</field_lsb>
    <rel_range>33</rel_range>
    <field_description order="before">
      <para>Stage 2 Instruction access cacheability disable. For the EL1&amp;0 translation regime, when EL2 is enabled in the current Security state and HCR_EL2.VM==1, this control forces all stage 2 translations for instruction accesses to Normal memory to be Non-cacheable.</para>
    </field_description>
    <field_description order="after"><para>This bit has no effect on the EL2, EL2&amp;0, or EL3 translation regimes.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, the PE ignores the value of this field for all purposes other than a direct read of this field.</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 stage 2 of the EL1&amp;0 translation regime.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Forces all stage 2 translations for instruction accesses to Normal memory to be Non-cacheable.</para>
<para>This applies regardless of the value of HCR_EL2.FWB.</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-32_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>CD</field_name>
    <field_msb>32</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>32</rel_range>
    <field_description order="before">
      <para>Stage 2 Data access cacheability disable. For the EL1&amp;0 translation regime, when EL2 is enabled in the current Security state and HCR_EL2.VM==1, this control forces all stage 2 translations for data accesses and translation table walks to Normal memory to be Non-cacheable.</para>
    </field_description>
    <field_description order="after"><para>This bit has no effect on the EL2, EL2&amp;0, or EL3 translation regimes.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, the PE ignores the value of this field for all purposes other than a direct read of this field.</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 stage 2 of the EL1&amp;0 translation regime for data accesses and translation table walks.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>Forces all stage 2 translations for data accesses and translation table walks to Normal memory to be Non-cacheable.</para>
<para>This applies regardless of the value of HCR_EL2.FWB.</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-31_31-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="RAO/WI">
    <field_name>RW</field_name>
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Execution state control for lower Exception levels:</para>
    </field_description>
    <field_description order="after"><para>In an implementation that includes EL3, when EL2 is not enabled in Secure state, the PE behaves as if this bit has the same value as the <register_link state="AArch64" id="AArch64-scr_el3.xml">SCR_EL3</register_link>.RW bit for all purposes other than a direct read or write access of HCR_EL2.</para>
<para>The RW bit is permitted to be cached in a TLB.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 1.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Lower levels are all AArch32.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The Execution state for EL1 is AArch64. The Execution state for EL0 is determined by the current value of PSTATE.nRW when executing at EL0.</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_AA32EL1 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-31_31-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="RAO/WI">
    <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, RAO/WI.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-30_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>TRVM</field_name>
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>30</rel_range>
    <field_description order="before"><para>Trap Reads of Virtual Memory controls. Traps reads of the virtual memory control registers to EL2, when EL2 is enabled in the current Security state, as follows: </para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, EL1 accesses to the following registers are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber> for <instruction>MRS</instruction> and <hexnumber>0x14</hexnumber> for <instruction>MRRS</instruction>:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>, <register_link state="AArch64" id="AArch64-ttbr0_el1.xml">TTBR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-ttbr1_el1.xml">TTBR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-tcr_el1.xml">TCR_EL1</register_link>, <register_link state="AArch64" id="AArch64-esr_el1.xml">ESR_EL1</register_link>, <register_link state="AArch64" id="AArch64-far_el1.xml">FAR_EL1</register_link>, <register_link state="AArch64" id="AArch64-afsr0_el1.xml">AFSR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-afsr1_el1.xml">AFSR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-mair_el1.xml">MAIR_EL1</register_link>, <register_link state="AArch64" id="AArch64-amair_el1.xml">AMAIR_EL1</register_link>, and <register_link state="AArch64" id="AArch64-contextidr_el1.xml">CONTEXTIDR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_AIE is implemented, <register_link state="AArch64" id="AArch64-mair2_el1.xml">MAIR2_EL1</register_link> and <register_link state="AArch64" id="AArch64-amair2_el1.xml">AMAIR2_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_S1PIE is implemented, <register_link state="AArch64" id="AArch64-pire0_el1.xml">PIRE0_EL1</register_link> and <register_link state="AArch64" id="AArch64-pir_el1.xml">PIR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_S1POE is implemented, <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link> and <register_link state="AArch64" id="AArch64-por_el1.xml">POR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_S2POE is implemented, <register_link state="AArch64" id="AArch64-s2por_el1.xml">S2POR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_TCR2 is implemented, <register_link state="AArch64" id="AArch64-tcr2_el1.xml">TCR2_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_SCTLR2 is implemented, <register_link state="AArch64" id="AArch64-sctlr2_el1.xml">SCTLR2_EL1</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, and EL0 is using AArch64, EL0 accesses to the following registers are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber> for <instruction>MRS</instruction>:<list type="unordered">
<listitem><content>If FEAT_S1POE is implemented, <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, EL1 accesses using MRC to the following registers are trapped to EL2 and reported using EC syndrome value <hexnumber>0x03</hexnumber>, accesses using MRRC are trapped to EL2 and reported using EC syndrome value <hexnumber>0x04</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>, <register_link state="AArch32" id="AArch32-ttbr0.xml">TTBR0</register_link>, <register_link state="AArch32" id="AArch32-ttbr1.xml">TTBR1</register_link>, <register_link state="AArch32" id="AArch32-ttbcr.xml">TTBCR</register_link>, <register_link state="AArch32" id="AArch32-ttbcr2.xml">TTBCR2</register_link>, <register_link state="AArch32" id="AArch32-dacr.xml">DACR</register_link>, <register_link state="AArch32" id="AArch32-dfsr.xml">DFSR</register_link>, <register_link state="AArch32" id="AArch32-ifsr.xml">IFSR</register_link>, <register_link state="AArch32" id="AArch32-dfar.xml">DFAR</register_link>, <register_link state="AArch32" id="AArch32-ifar.xml">IFAR</register_link>, <register_link state="AArch32" id="AArch32-adfsr.xml">ADFSR</register_link>, <register_link state="AArch32" id="AArch32-aifsr.xml">AIFSR</register_link>, <register_link state="AArch32" id="AArch32-prrr.xml">PRRR</register_link>, <register_link state="AArch32" id="AArch32-nmrr.xml">NMRR</register_link>, <register_link state="AArch32" id="AArch32-mair0.xml">MAIR0</register_link>, <register_link state="AArch32" id="AArch32-mair1.xml">MAIR1</register_link>, <register_link state="AArch32" id="AArch32-amair0.xml">AMAIR0</register_link>, <register_link state="AArch32" id="AArch32-amair1.xml">AMAIR1</register_link>, and <register_link state="AArch32" id="AArch32-contextidr.xml">CONTEXTIDR</register_link>.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_description order="after"><para>When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
<note><para>EL2 provides a second stage of address translation, that a hypervisor can use to remap the address map defined by a Guest OS. In addition, a hypervisor can trap attempts by a Guest OS to write to the registers that control the memory system. A hypervisor might use this trap as part of its virtualization of memory management.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Read accesses to the specified Virtual Memory control registers are trapped to EL2, when EL2 is enabled in the current Security state.</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-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>HCD</field_name>
    <field_msb>29</field_msb>
    <field_lsb>29</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>HVC instruction disable. Disables EL1 and EL2 execution of HVC instructions, from both Execution states, when EL2 is enabled in the current Security state, reported using EC syndrome value <hexnumber>0x00</hexnumber>.</para>
    </field_description>
    <field_description order="after">
      <note>
        <para>HVC instructions are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0.</para>
      </note>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>HVC instruction execution is enabled at EL2 and EL1.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>HVC instructions are <arm-defined-word>UNDEFINED</arm-defined-word> at EL2 and EL1. Any resulting exception is taken to the Exception level at which the HVC instruction is executed.</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 EL3 is not 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" 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>TDZ</field_name>
    <field_msb>28</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>28</rel_range>
    <field_description order="before"><para>Traps EL0 and EL1 execution of the following instructions to EL2, when EL2 is enabled in the current Security state, from AArch64 state only, reported using EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link id="AArch64-dc-zva.xml" state="AArch64">DC ZVA</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_MTE">FEAT_MTE</xref> is implemented, <register_link id="AArch64-dc-gva.xml" state="AArch64">DC GVA</register_link> and <register_link id="AArch64-dc-gzva.xml" state="AArch64">DC GZVA</register_link>.</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>In AArch64 state, any attempt to execute an instruction this trap applies to at EL1, or at EL0 when the instruction is not <arm-defined-word>UNDEFINED</arm-defined-word> at EL0, is trapped to EL2 when EL2 is enabled in the current Security state.</para>
<para>Reading the <register_link state="AArch64" id="AArch64-dczid_el0.xml">DCZID_EL0</register_link> returns a value that indicates that the instructions this trap applies to are not supported.</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-27_27" 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>TGE</field_name>
    <field_msb>27</field_msb>
    <field_lsb>27</field_lsb>
    <rel_range>27</rel_range>
    <field_description order="before">
      <para>Trap General Exceptions, from EL0.</para>
    </field_description>
    <field_description order="after">
      <para>HCR_EL2.TGE must not be cached in a TLB.</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 execution at EL0.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>When EL2 is not enabled in the current Security state, the Effective value of this field is 0.</para>
<para>When EL2 is enabled in the current Security state, in all cases:</para>
<list type="unordered">
<listitem><content>All exceptions that would be routed to EL1 are routed to EL2.</content>
</listitem><listitem><content>If EL1 is using AArch64, the <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.M field is treated as being 0 for all purposes other than returning the result of a direct read of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.</content>
</listitem><listitem><content>If EL1 is using AArch32, the <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.M field is treated as being 0 for all purposes other than returning the result of a direct read of <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.</content>
</listitem><listitem><content>All virtual interrupts and virtual exceptions are disabled.</content>
</listitem><listitem><content>Any <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> mechanisms for signaling virtual interrupts are disabled.</content>
</listitem><listitem><content>An exception return to EL1 is treated as an illegal exception return.</content>
</listitem><listitem><content>The <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.{TDRA, TDOSA, TDA, TDE} fields are treated as being 1 for all purposes other than returning the result of a direct read of <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.</content>
</listitem></list>
<para>In addition, when EL2 is enabled in the current Security state, if:</para>
<list type="unordered">
<listitem><content>The Effective value of HCR_EL2.E2H is not 1, the Effective values of the HCR_EL2.{FMO, IMO, AMO} fields are 1.</content>
</listitem><listitem><content>The Effective value of HCR_EL2.E2H is 1, the Effective values of the HCR_EL2.{FMO, IMO, AMO} fields are 0.</content>
</listitem></list>
<para>For further information on the behavior of this bit when the Effective value of E2H is 1, see <xref linkend="#MDSec.Behavior_of_HCR_EL2_E2H">'Behavior of HCR_EL2.E2H'</xref>.</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-26_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>TVM</field_name>
    <field_msb>26</field_msb>
    <field_lsb>26</field_lsb>
    <rel_range>26</rel_range>
    <field_description order="before"><para>Trap Virtual Memory controls. Traps writes to the virtual memory control registers to EL2, when EL2 is enabled in the current Security state, as follows: </para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, the following registers are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber> for <instruction>MSR</instruction> and <hexnumber>0x14</hexnumber> for <instruction>MSRR</instruction>:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>, <register_link state="AArch64" id="AArch64-ttbr0_el1.xml">TTBR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-ttbr1_el1.xml">TTBR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-tcr_el1.xml">TCR_EL1</register_link>, <register_link state="AArch64" id="AArch64-esr_el1.xml">ESR_EL1</register_link>, <register_link state="AArch64" id="AArch64-far_el1.xml">FAR_EL1</register_link>, <register_link state="AArch64" id="AArch64-afsr0_el1.xml">AFSR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-afsr1_el1.xml">AFSR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-mair_el1.xml">MAIR_EL1</register_link>, <register_link state="AArch64" id="AArch64-amair_el1.xml">AMAIR_EL1</register_link>, and <register_link state="AArch64" id="AArch64-contextidr_el1.xml">CONTEXTIDR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_AIE is implemented, <register_link state="AArch64" id="AArch64-mair2_el1.xml">MAIR2_EL1</register_link> and <register_link state="AArch64" id="AArch64-amair2_el1.xml">AMAIR2_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_S1PIE is implemented, <register_link state="AArch64" id="AArch64-pire0_el1.xml">PIRE0_EL1</register_link> and <register_link state="AArch64" id="AArch64-pir_el1.xml">PIR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_S1POE is implemented, <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link> and <register_link state="AArch64" id="AArch64-por_el1.xml">POR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_S2POE is implemented, <register_link state="AArch64" id="AArch64-s2por_el1.xml">S2POR_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_TCR2 is implemented, <register_link state="AArch64" id="AArch64-tcr2_el1.xml">TCR2_EL1</register_link>.</content>
</listitem><listitem><content>If FEAT_SCTLR2 is implemented, <register_link state="AArch64" id="AArch64-sctlr2_el1.xml">SCTLR2_EL1</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If the Effective value of HCR_EL2.{E2H, TGE} is not {1, 1}, and EL0 is using AArch64, EL0 accesses to the following registers are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber> for <instruction>MSR</instruction>:<list type="unordered">
<listitem><content>If FEAT_S1POE is implemented, <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, EL1 accesses using MCR to the following registers are trapped to EL2 and reported using EC syndrome value <hexnumber>0x03</hexnumber>, accesses using MCRR are trapped to EL2 and reported using EC syndrome value <hexnumber>0x04</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>, <register_link state="AArch32" id="AArch32-ttbr0.xml">TTBR0</register_link>, <register_link state="AArch32" id="AArch32-ttbr1.xml">TTBR1</register_link>, <register_link state="AArch32" id="AArch32-ttbcr.xml">TTBCR</register_link>, <register_link state="AArch32" id="AArch32-ttbcr2.xml">TTBCR2</register_link>, <register_link state="AArch32" id="AArch32-dacr.xml">DACR</register_link>, <register_link state="AArch32" id="AArch32-dfsr.xml">DFSR</register_link>, <register_link state="AArch32" id="AArch32-ifsr.xml">IFSR</register_link>, <register_link state="AArch32" id="AArch32-dfar.xml">DFAR</register_link>, <register_link state="AArch32" id="AArch32-ifar.xml">IFAR</register_link>, <register_link state="AArch32" id="AArch32-adfsr.xml">ADFSR</register_link>, <register_link state="AArch32" id="AArch32-aifsr.xml">AIFSR</register_link>, <register_link state="AArch32" id="AArch32-prrr.xml">PRRR</register_link>, <register_link state="AArch32" id="AArch32-nmrr.xml">NMRR</register_link>, <register_link state="AArch32" id="AArch32-mair0.xml">MAIR0</register_link>, <register_link state="AArch32" id="AArch32-mair1.xml">MAIR1</register_link>, <register_link state="AArch32" id="AArch32-amair0.xml">AMAIR0</register_link>, <register_link state="AArch32" id="AArch32-amair1.xml">AMAIR1</register_link>, and <register_link state="AArch32" id="AArch32-contextidr.xml">CONTEXTIDR</register_link>.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is {1, 1}, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Write accesses to the specified Virtual Memory control registers are trapped to EL2, when EL2 is enabled in the current Security state.</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-25_25" 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>TTLB</field_name>
    <field_msb>25</field_msb>
    <field_lsb>25</field_lsb>
    <rel_range>25</rel_range>
    <field_description order="before"><para>Trap TLB maintenance instructions. Traps execution of TLB maintenance instructions at EL1 to EL2, when EL2 is enabled in the current Security state, as follows: </para>
<list type="unordered">
<listitem><content>
<para>If EL1 is using AArch64, then the following instructions are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link id="AArch64-tlbi-vmalle1.xml" state="AArch64">TLBI VMALLE1</register_link>, <register_link id="AArch64-tlbi-vae1.xml" state="AArch64">TLBI VAE1</register_link>, <register_link id="AArch64-tlbi-aside1.xml" state="AArch64">TLBI ASIDE1</register_link>, <register_link id="AArch64-tlbi-vaae1.xml" state="AArch64">TLBI VAAE1</register_link>, <register_link id="AArch64-tlbi-vale1.xml" state="AArch64">TLBI VALE1</register_link>, and <register_link id="AArch64-tlbi-vaale1.xml" state="AArch64">TLBI VAALE1</register_link>.</content>
</listitem><listitem><content><register_link id="AArch64-tlbi-vmalle1is.xml" state="AArch64">TLBI VMALLE1IS</register_link>, <register_link id="AArch64-tlbi-vae1is.xml" state="AArch64">TLBI VAE1IS</register_link>, <register_link id="AArch64-tlbi-aside1is.xml" state="AArch64">TLBI ASIDE1IS</register_link>, <register_link id="AArch64-tlbi-vaae1is.xml" state="AArch64">TLBI VAAE1IS</register_link>, <register_link id="AArch64-tlbi-vale1is.xml" state="AArch64">TLBI VALE1IS</register_link>, and <register_link id="AArch64-tlbi-vaale1is.xml" state="AArch64">TLBI VAALE1IS</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_TLBIOS">FEAT_TLBIOS</xref> is implemented, <register_link id="AArch64-tlbi-vmalle1os.xml" state="AArch64">TLBI VMALLE1OS</register_link>, <register_link id="AArch64-tlbi-vae1os.xml" state="AArch64">TLBI VAE1OS</register_link>, <register_link id="AArch64-tlbi-aside1os.xml" state="AArch64">TLBI ASIDE1OS</register_link>, <register_link id="AArch64-tlbi-vaae1os.xml" state="AArch64">TLBI VAAE1OS</register_link>, <register_link id="AArch64-tlbi-vale1os.xml" state="AArch64">TLBI VALE1OS</register_link>, and <register_link id="AArch64-tlbi-vaale1os.xml" state="AArch64">TLBI VAALE1OS</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_TLBIRANGE">FEAT_TLBIRANGE</xref> is implemented, <register_link id="AArch64-tlbi-rvae1.xml" state="AArch64">TLBI RVAE1</register_link>, <register_link id="AArch64-tlbi-rvaae1.xml" state="AArch64">TLBI RVAAE1</register_link>, <register_link id="AArch64-tlbi-rvale1.xml" state="AArch64">TLBI RVALE1</register_link>, <register_link id="AArch64-tlbi-rvaale1.xml" state="AArch64">TLBI RVAALE1</register_link>, <register_link id="AArch64-tlbi-rvae1is.xml" state="AArch64">TLBI RVAE1IS</register_link>, <register_link id="AArch64-tlbi-rvaae1is.xml" state="AArch64">TLBI RVAAE1IS</register_link>, <register_link id="AArch64-tlbi-rvale1is.xml" state="AArch64">TLBI RVALE1IS</register_link>, and <register_link id="AArch64-tlbi-rvaale1is.xml" state="AArch64">TLBI RVAALE1IS</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_TLBIOS">FEAT_TLBIOS</xref> and <xref linkend="#FEAT_TLBIRANGE">FEAT_TLBIRANGE</xref> are implemented, <register_link id="AArch64-tlbi-rvae1os.xml" state="AArch64">TLBI RVAE1OS</register_link>, <register_link id="AArch64-tlbi-rvaae1os.xml" state="AArch64">TLBI RVAAE1OS</register_link>, <register_link id="AArch64-tlbi-rvale1os.xml" state="AArch64">TLBI RVALE1OS</register_link>, and <register_link id="AArch64-tlbi-rvaale1os.xml" state="AArch64">TLBI RVAALE1OS</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>
<para>If EL1 is using AArch32, then the following instructions are trapped to EL2 and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-tlbiallis.xml">TLBIALLIS</register_link>, <register_link state="AArch32" id="AArch32-tlbimvais.xml">TLBIMVAIS</register_link>, <register_link state="AArch32" id="AArch32-tlbiasidis.xml">TLBIASIDIS</register_link>, <register_link state="AArch32" id="AArch32-tlbimvaais.xml">TLBIMVAAIS</register_link>, <register_link state="AArch32" id="AArch32-tlbimvalis.xml">TLBIMVALIS</register_link>, and <register_link state="AArch32" id="AArch32-tlbimvaalis.xml">TLBIMVAALIS</register_link>.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-tlbiall.xml">TLBIALL</register_link>, <register_link state="AArch32" id="AArch32-tlbimva.xml">TLBIMVA</register_link>, <register_link state="AArch32" id="AArch32-tlbiasid.xml">TLBIASID</register_link>, <register_link state="AArch32" id="AArch32-tlbimvaa.xml">TLBIMVAA</register_link>, <register_link state="AArch32" id="AArch32-tlbimval.xml">TLBIMVAL</register_link>, and <register_link state="AArch32" id="AArch32-tlbimvaal.xml">TLBIMVAAL</register_link></content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-itlbiall.xml">ITLBIALL</register_link>, <register_link state="AArch32" id="AArch32-itlbimva.xml">ITLBIMVA</register_link>, and <register_link state="AArch32" id="AArch32-itlbiasid.xml">ITLBIASID</register_link>.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-dtlbiall.xml">DTLBIALL</register_link>, <register_link state="AArch32" id="AArch32-dtlbimva.xml">DTLBIMVA</register_link>, and <register_link state="AArch32" id="AArch32-dtlbiasid.xml">DTLBIASID</register_link>.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_description order="after"><para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
<note><para>The TLB maintenance instructions are <arm-defined-word>UNDEFINED</arm-defined-word> at EL0.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1 execution of the specified TLB maintenance instructions are trapped to EL2, when EL2 is enabled in the current Security state.</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-24_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>TPU</field_name>
    <field_msb>24</field_msb>
    <field_lsb>24</field_lsb>
    <rel_range>24</rel_range>
    <field_description order="before"><para>Trap cache maintenance instructions that operate to the Point of Unification. Traps execution of those cache maintenance instructions at EL0 and EL1 to EL2, when EL2 is enabled in the current Security state, as follows: </para>
<list type="unordered">
<listitem><content>If EL0 is using AArch64 and the value of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCI is 1, then the following instructions at EL0 are trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-ic-ivau.xml" state="AArch64">IC IVAU</register_link> and <register_link id="AArch64-dc-cvau.xml" state="AArch64">DC CVAU</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch64, then the following instructions at EL1 are trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-ic-ivau.xml" state="AArch64">IC IVAU</register_link>, <register_link id="AArch64-ic-iallu.xml" state="AArch64">IC IALLU</register_link>, <register_link id="AArch64-ic-ialluis.xml" state="AArch64">IC IALLUIS</register_link>, and <register_link id="AArch64-dc-cvau.xml" state="AArch64">DC CVAU</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, then the following instructions are trapped to EL2 and reported with EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-icimvau.xml">ICIMVAU</register_link>, <register_link state="AArch32" id="AArch32-iciallu.xml">ICIALLU</register_link>, <register_link state="AArch32" id="AArch32-icialluis.xml">ICIALLUIS</register_link>, and <register_link state="AArch32" id="AArch32-dccmvau.xml">DCCMVAU</register_link>.</content>
</listitem></list>
</content>
</listitem></list>
<note><para>When <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCI is 0, the trap on execution of instructions at EL0 is higher priority than this control.</para><para>An exception generated because an instruction is <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 is higher priority than this trap to EL2. In addition:</para><list type="unordered"><listitem><content><register_link id="AArch64-ic-ialluis.xml" state="AArch64">IC IALLUIS</register_link> and <register_link id="AArch64-ic-iallu.xml" state="AArch64">IC IALLU</register_link> are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 using AArch64.</content></listitem><listitem><content><register_link state="AArch32" id="AArch32-icimvau.xml">ICIMVAU</register_link>, <register_link state="AArch32" id="AArch32-iciallu.xml">ICIALLU</register_link>, <register_link state="AArch32" id="AArch32-icialluis.xml">ICIALLUIS</register_link>, and <register_link state="AArch32" id="AArch32-dccmvau.xml">DCCMVAU</register_link> are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 using AArch32.</content></listitem></list></note></field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For each of the specified instructions, if the execution of the instruction can be trapped, access is trapped to EL2, when EL2 is enabled in the current Security state.</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-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>TPCP</field_name>
    <field_msb>23</field_msb>
    <field_lsb>23</field_lsb>
    <rel_range>23</rel_range>
    <field_description order="before"><para>Trap data or unified cache maintenance instructions that operate to the Point of Coherency, Persistence, or Physical Storage.
When EL2 is enabled in the current Security state, traps execution of cache maintenance instructions at EL0 and EL1 to EL2 as follows:</para>
<list type="unordered">
<listitem><content>If EL0 is using AArch64 and the value of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCI is 1, then the following instructions at EL0 are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-dc-civac.xml" state="AArch64">DC CIVAC</register_link> and <register_link id="AArch64-dc-cvac.xml" state="AArch64">DC CVAC</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_MTE">FEAT_MTE</xref> is implemented, <register_link id="AArch64-dc-cigvac.xml" state="AArch64">DC CIGVAC</register_link>, <register_link id="AArch64-dc-cigdvac.xml" state="AArch64">DC CIGDVAC</register_link>, <register_link id="AArch64-dc-cgvac.xml" state="AArch64">DC CGVAC</register_link>, and <register_link id="AArch64-dc-cgdvac.xml" state="AArch64">DC CGDVAC</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB">FEAT_DPB</xref> is implemented, <register_link id="AArch64-dc-cvap.xml" state="AArch64">DC CVAP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB">FEAT_DPB</xref> and <xref linkend="#FEAT_MTE">FEAT_MTE</xref> are implemented, <register_link id="AArch64-dc-cgvap.xml" state="AArch64">DC CGVAP</register_link> and <register_link id="AArch64-dc-cgdvap.xml" state="AArch64">DC CGDVAP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB2">FEAT_DPB2</xref> is implemented, <register_link id="AArch64-dc-cvadp.xml" state="AArch64">DC CVADP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB2">FEAT_DPB2</xref> and <xref linkend="#FEAT_MTE">FEAT_MTE</xref> are implemented, <register_link id="AArch64-dc-cgvadp.xml" state="AArch64">DC CGVADP</register_link> and <register_link id="AArch64-dc-cgdvadp.xml" state="AArch64">DC CGDVADP</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If <xref linkend="#FEAT_OCCMO">FEAT_OCCMO</xref> is implemented, <register_link id="AArch64-dc-civaoc.xml" state="AArch64">DC CIVAOC</register_link>, <register_link id="AArch64-dc-cigdvaoc.xml" state="AArch64">DC CIGDVAOC</register_link>, <register_link id="AArch64-dc-cvaoc.xml" state="AArch64">DC CVAOC</register_link> and <register_link id="AArch64-dc-cgdvaoc.xml" state="AArch64">DC CGDVAOC</register_link>.</content>
</listitem><listitem><content>If EL1 is using AArch64, then the following instructions at EL1 are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-dc-ivac.xml" state="AArch64">DC IVAC</register_link>, <register_link id="AArch64-dc-civac.xml" state="AArch64">DC CIVAC</register_link> and <register_link id="AArch64-dc-cvac.xml" state="AArch64">DC CVAC</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_MTE">FEAT_MTE</xref> is implemented, <register_link id="AArch64-dc-cigvac.xml" state="AArch64">DC CIGVAC</register_link>, <register_link id="AArch64-dc-cigdvac.xml" state="AArch64">DC CIGDVAC</register_link>, <register_link id="AArch64-dc-igvac.xml" state="AArch64">DC IGVAC</register_link>, <register_link id="AArch64-dc-igdvac.xml" state="AArch64">DC IGDVAC</register_link>, <register_link id="AArch64-dc-cgvac.xml" state="AArch64">DC CGVAC</register_link>, and <register_link id="AArch64-dc-cgdvac.xml" state="AArch64">DC CGDVAC</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB">FEAT_DPB</xref> is implemented, <register_link id="AArch64-dc-cvap.xml" state="AArch64">DC CVAP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB">FEAT_DPB</xref> and <xref linkend="#FEAT_MTE">FEAT_MTE</xref> are implemented, <register_link id="AArch64-dc-cgvap.xml" state="AArch64">DC CGVAP</register_link> and <register_link id="AArch64-dc-cgdvap.xml" state="AArch64">DC CGDVAP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB2">FEAT_DPB2</xref> is implemented, <register_link id="AArch64-dc-cvadp.xml" state="AArch64">DC CVADP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_DPB2">FEAT_DPB2</xref> and <xref linkend="#FEAT_MTE">FEAT_MTE</xref> are implemented, <register_link id="AArch64-dc-cgvadp.xml" state="AArch64">DC CGVADP</register_link> and <register_link id="AArch64-dc-cgdvadp.xml" state="AArch64">DC CGDVADP</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_PoPS">FEAT_PoPS</xref> is implemented, <register_link id="AArch64-dc-civaps.xml" state="AArch64">DC CIVAPS</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_PoPS">FEAT_PoPS</xref> and <xref linkend="#FEAT_MTE2">FEAT_MTE2</xref> are implemented, <register_link id="AArch64-dc-cigdvaps.xml" state="AArch64">DC CIGDVAPS</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If <xref linkend="#FEAT_OCCMO">FEAT_OCCMO</xref> is implemented, <register_link id="AArch64-dc-civaoc.xml" state="AArch64">DC CIVAOC</register_link>, <register_link id="AArch64-dc-cigdvaoc.xml" state="AArch64">DC CIGDVAOC</register_link>, <register_link id="AArch64-dc-cvaoc.xml" state="AArch64">DC CVAOC</register_link> and <register_link id="AArch64-dc-cgdvaoc.xml" state="AArch64">DC CGDVAOC</register_link>.</content>
</listitem><listitem><content>If EL1 is using AArch32, then the following instructions at EL1 are trapped to EL2 and reported using EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-dcimvac.xml">DCIMVAC</register_link>, <register_link state="AArch32" id="AArch32-dccimvac.xml">DCCIMVAC</register_link>, and <register_link state="AArch32" id="AArch32-dccmvac.xml">DCCMVAC</register_link>.</content>
</listitem></list>
</content>
</listitem></list>
<note><para>This field was previously named TPC.</para><para>When <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCI is 0, the trap on execution of instructions at EL0 is higher priority than this control.</para><para>An exception generated because an instruction is <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 is higher priority than this trap to EL2. In addition:</para><list type="unordered"><listitem><content>AArch64 instructions which invalidate by VA to the Point of Coherency or Physical Storage are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 using AArch64.</content></listitem><listitem><content><register_link state="AArch32" id="AArch32-dcimvac.xml">DCIMVAC</register_link>, <register_link state="AArch32" id="AArch32-dccimvac.xml">DCCIMVAC</register_link>, and <register_link state="AArch32" id="AArch32-dccmvac.xml">DCCMVAC</register_link> are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 using AArch32.</content></listitem></list></note></field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>For each of the specified instructions, if the execution of the instruction can be trapped, it is trapped to EL2, when EL2 is enabled in the current Security state.</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-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>TSW</field_name>
    <field_msb>22</field_msb>
    <field_lsb>22</field_lsb>
    <rel_range>22</rel_range>
    <field_description order="before"><para>Trap data or unified cache maintenance instructions that operate by Set/Way. Traps execution of those cache maintenance instructions at EL1 to EL2, when EL2 is enabled in the current Security state, as follows: </para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, then the following instructions are trapped to EL2 and reported with EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link id="AArch64-dc-isw.xml" state="AArch64">DC ISW</register_link>, <register_link id="AArch64-dc-csw.xml" state="AArch64">DC CSW</register_link>, and <register_link id="AArch64-dc-cisw.xml" state="AArch64">DC CISW</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_MTE2">FEAT_MTE2</xref> is implemented, <register_link id="AArch64-dc-igsw.xml" state="AArch64">DC IGSW</register_link>, <register_link id="AArch64-dc-igdsw.xml" state="AArch64">DC IGDSW</register_link>, <register_link id="AArch64-dc-cgsw.xml" state="AArch64">DC CGSW</register_link>, <register_link id="AArch64-dc-cgdsw.xml" state="AArch64">DC CGDW</register_link>, <register_link id="AArch64-dc-cigsw.xml" state="AArch64">DC CIGSW</register_link>, and <register_link id="AArch64-dc-cigdsw.xml" state="AArch64">DC CIGDSW</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL1 is using AArch32, then the following instructions are trapped to EL2 and reported with EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-dcisw.xml">DCISW</register_link>, <register_link state="AArch32" id="AArch32-dccsw.xml">DCCSW</register_link>, and <register_link state="AArch32" id="AArch32-dccisw.xml">DCCISW</register_link>.</content>
</listitem></list>
</content>
</listitem></list>
<note><para>An exception generated because an instruction is <arm-defined-word>UNDEFINED</arm-defined-word> at EL0 is higher priority than this trap to EL2, and these instructions are always <arm-defined-word>UNDEFINED</arm-defined-word> at EL0.</para></note></field_description>
    <field_description order="after">
      <para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Execution of the specified instructions is trapped to EL2, when EL2 is enabled in the current Security state.</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-21_21" 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>TACR</field_name>
    <field_msb>21</field_msb>
    <field_lsb>21</field_lsb>
    <rel_range>21</rel_range>
    <field_description order="before"><para>Trap Auxiliary Control Registers. Traps EL1 accesses to the Auxiliary Control Registers to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, accesses to <register_link state="AArch64" id="AArch64-actlr_el1.xml">ACTLR_EL1</register_link> to EL2, are trapped to EL2 and reported using EC syndrome value <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content>If EL1 is using AArch32, accesses to <register_link state="AArch32" id="AArch32-actlr.xml">ACTLR</register_link> and, if implemented, <register_link state="AArch32" id="AArch32-actlr2.xml">ACTLR2</register_link> are trapped to EL2 and reported using EC syndrome value <hexnumber>0x03</hexnumber>.</content>
</listitem></list></field_description>
    <field_description order="after"><para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
<note><para><register_link state="AArch64" id="AArch64-actlr_el1.xml">ACTLR_EL1</register_link> is not accessible at EL0.</para><para><register_link state="AArch32" id="AArch32-actlr.xml">ACTLR</register_link> and <register_link state="AArch32" id="AArch32-actlr2.xml">ACTLR2</register_link> are not accessible at EL0.</para><para>The Auxiliary Control Registers are <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> registers that might implement global control bits for the PE.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1 accesses to the specified registers are trapped to EL2, when EL2 is enabled in the current Security state.</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-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>TIDCP</field_name>
    <field_msb>20</field_msb>
    <field_lsb>20</field_lsb>
    <rel_range>20</rel_range>
    <field_description order="before"><para>Trap <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> functionality. Traps EL1 accesses to the encodings reserved for <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> functionality to EL2, when EL2 is enabled in the current Security state as follows:</para>
<list type="unordered">
<listitem><content>In AArch64 state, EL1 access to the encodings in the following reserved encoding spaces are trapped:<list type="unordered">
<listitem><content><arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> System instructions, which are accessed using SYS and SYSL, with CRn == {11, 15}, and are reported using EC syndrome value <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content><arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> System instructions, which are accessed using SYSP, with CRn == {11, 15}, and are reported using EC syndrome value <hexnumber>0x14</hexnumber>.</content>
</listitem><listitem><content><arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> System registers, which are accessed using MRS and MSR with the <register_link id="AArch64-s3_op1_cn_cm_op2.xml" state="AArch64">S3_&lt;op1&gt;_&lt;Cn&gt;_&lt;Cm&gt;_&lt;op2&gt;</register_link> register name, and are reported using EC syndrome <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content><arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> System registers, which are accessed using MRRS and MSRR with the <register_link id="AArch64-s3_op1_cn_cm_op2.xml" state="AArch64">S3_&lt;op1&gt;_&lt;Cn&gt;_&lt;Cm&gt;_&lt;op2&gt;</register_link> register name, and are reported using EC syndrome <hexnumber>0x14</hexnumber>.</content>
</listitem></list>
</content>
</listitem><listitem><content>In AArch32 state, MCR and MRC access to instructions with the following encodings are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content>All coproc==p15, CRn==c9, opc1 == {0-7}, CRm == {c0-c2, c5-c8}, opc2 == {0-7}.</content>
</listitem><listitem><content>All coproc==p15, CRn==c10, opc1 =={0-7}, CRm == {c0, c1, c4, c8}, opc2 == {0-7}.</content>
</listitem><listitem><content>All coproc==p15, CRn==c11, opc1=={0-7}, CRm == {c0-c8, c15}, opc2 == {0-7}.</content>
</listitem></list>
</content>
</listitem></list>
<para>For accesses to these regions of encoding space by EL0, all of the following apply:</para>
<list type="unordered">
<listitem><content>If FEAT_TIDCP1 is implemented, traps caused by <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.TIDCP and <register_link state="AArch64" id="AArch64-sctlr_el2.xml">SCTLR_EL2</register_link>.TIDCP are reported with higher priority than traps caused by this control.</content>
</listitem><listitem><content>If FEAT_TIDCP1 is not implemented, or the access is not trapped by SCTLR_ELx.TIDCP, one of the following applies:<list type="unordered">
<listitem><content>If <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TIDCP is 0 then it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word>, for each encoding, whether the access is performed, is <arm-defined-word>UNDEFINED</arm-defined-word>, or is trapped by an <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> mechanism.</content>
</listitem><listitem><content>If <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TIDCP is 1 then it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word>, for each encoding, whether the access is trapped to EL2. If it is not trapped it is <arm-defined-word>UNDEFINED</arm-defined-word>.</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_description order="after"><para>An implementation can also include <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> registers that provide additional controls, to give finer-grained control of the trapping of <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> features.</para>
<note><para>The trapping of accesses to these registers from EL1 is higher priority than an exception resulting from the register access being <arm-defined-word>UNDEFINED</arm-defined-word>.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1 accesses to or execution of the specified encodings reserved for <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> functionality are trapped to EL2, when EL2 is enabled in the current Security state.</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">
    <field_name>TSC</field_name>
    <field_msb>19</field_msb>
    <field_lsb>19</field_lsb>
    <rel_range>19</rel_range>
    <field_description order="before"><para>Trap <instruction>SMC</instruction> instructions. Traps EL1 execution of <instruction>SMC</instruction> instructions to EL2, when EL2 is enabled in the current Security state.</para>
<para>If execution is in AArch64 state, the trap is reported using EC syndrome value <hexnumber>0x17</hexnumber>.</para>
<para>If execution is in AArch32 state, the trap is reported using EC syndrome value <hexnumber>0x13</hexnumber>.</para>
<note><para>HCR_EL2.TSC traps execution of the <instruction>SMC</instruction> instruction. It is not a routing control for the <instruction>SMC</instruction> exception. Trap exceptions and <instruction>SMC</instruction> exceptions have different preferred return addresses.</para></note></field_description>
    <field_description order="after"><para>In AArch32 state, the Armv8-A architecture permits, but does not require, this trap to apply to conditional <instruction>SMC</instruction> instructions that fail their condition code check, in the same way as with traps on other conditional instructions.</para>
<para><instruction>SMC</instruction> instructions are <arm-defined-word>UNDEFINED</arm-defined-word> at EL0.</para>
<para>If EL3 is not implemented, and the Effective value of HCR_EL2.NV is 0, then it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether this bit is:</para>
<list type="unordered">
<listitem><content><arm-defined-word>RES0</arm-defined-word>.</content>
</listitem><listitem><content>Implemented with the functionality as described in HCR_EL2.TSC.</content>
</listitem></list>
<para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>If EL3 is implemented, then any attempt to execute an <instruction>SMC</instruction> instruction at EL1 is trapped to EL2, when EL2 is enabled in the current Security state, regardless of the value of <register_link state="AArch64" id="AArch64-scr_el3.xml">SCR_EL3</register_link>.SMD.</para>
<para>If EL3 is not implemented and the Effective value of HCR_EL2.NV is 1, then any attempt to execute an SMC instruction at EL1 using AArch64 is trapped to EL2.</para>
<para>If EL3 is not implemented and the Effective value of HCR_EL2.NV is 0, then it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether:</para>
<list type="unordered">
<listitem><content>Any attempt to execute an SMC instruction at EL1 is trapped to EL2, when EL2 is enabled in the current Security state.</content>
</listitem><listitem><content>Any attempt to execute an SMC instruction is <arm-defined-word>UNDEFINED</arm-defined-word>.</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>
  <field id="fieldset_0-18_18" 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>TID3</field_name>
    <field_msb>18</field_msb>
    <field_lsb>18</field_lsb>
    <rel_range>18</rel_range>
    <field_description order="before"><para>Trap ID group 3. Traps EL1 reads of group 3 ID registers to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<para>In AArch64 state:</para>
<list type="unordered">
<listitem><content>Reads of the following registers are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-id_pfr0_el1.xml">ID_PFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_pfr1_el1.xml">ID_PFR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_dfr0_el1.xml">ID_DFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_afr0_el1.xml">ID_AFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_mmfr0_el1.xml">ID_MMFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_mmfr1_el1.xml">ID_MMFR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_mmfr2_el1.xml">ID_MMFR2_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_mmfr3_el1.xml">ID_MMFR3_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_isar0_el1.xml">ID_ISAR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_isar1_el1.xml">ID_ISAR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_isar2_el1.xml">ID_ISAR2_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_isar3_el1.xml">ID_ISAR3_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_isar4_el1.xml">ID_ISAR4_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_isar5_el1.xml">ID_ISAR5_EL1</register_link>, <register_link state="AArch64" id="AArch64-mvfr0_el1.xml">MVFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-mvfr1_el1.xml">MVFR1_EL1</register_link>, and <register_link state="AArch64" id="AArch64-mvfr2_el1.xml">MVFR2_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64pfr0_el1.xml">ID_AA64PFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64pfr1_el1.xml">ID_AA64PFR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64dfr0_el1.xml">ID_AA64DFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64dfr1_el1.xml">ID_AA64DFR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64isar0_el1.xml">ID_AA64ISAR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64isar1_el1.xml">ID_AA64ISAR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64mmfr0_el1.xml">ID_AA64MMFR0_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64mmfr1_el1.xml">ID_AA64MMFR1_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_aa64afr0_el1.xml">ID_AA64AFR0_EL1</register_link>, and <register_link state="AArch64" id="AArch64-id_aa64afr1_el1.xml">ID_AA64AFR1_EL1</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_FGT">FEAT_FGT</xref> is implemented, reads of the following registers are trapped to EL2. If FEAT_FGT is not implemented, reads of the following registers are trapped to EL2, unless the registers are implemented as RAZ, when it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether accesses are trapped to EL2.<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-id_pfr2_el1.xml">ID_PFR2_EL1</register_link>, <register_link state="AArch64" id="AArch64-id_mmfr4_el1.xml">ID_MMFR4_EL1</register_link> and <register_link state="AArch64" id="AArch64-id_mmfr5_el1.xml">ID_MMFR5_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64mmfr3_el1.xml">ID_AA64MMFR3_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64mmfr4_el1.xml">ID_AA64MMFR4_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64pfr2_el1.xml">ID_AA64PFR2_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64mmfr2_el1.xml">ID_AA64MMFR2_EL1</register_link> and <register_link state="AArch64" id="AArch64-id_isar6_el1.xml">ID_ISAR6_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_dfr1_el1.xml">ID_DFR1_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64zfr0_el1.xml">ID_AA64ZFR0_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64smfr0_el1.xml">ID_AA64SMFR0_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch64" id="AArch64-id_aa64isar2_el1.xml">ID_AA64ISAR2_EL1</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>If <xref linkend="#FEAT_FGT">FEAT_FGT</xref> is implemented, this field traps all MRS accesses to registers in the following range that are not already mentioned in this field description: op0 == 3, op1 == 0, CRn == 0, CRm == {2-7}, op2 == {0-7}. If FEAT_FGT is not implemented, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether this field traps accesses to registers in the range.</content>
</listitem></list>
</content>
</listitem></list>
<para>In AArch32 state:</para>
<list type="unordered">
<listitem><content>VMRS access to <register_link state="AArch32" id="AArch32-mvfr0.xml">MVFR0</register_link>, <register_link state="AArch32" id="AArch32-mvfr1.xml">MVFR1</register_link>, and <register_link state="AArch32" id="AArch32-mvfr2.xml">MVFR2</register_link>, are trapped to EL2, reported using EC syndrome value <hexnumber>0x08</hexnumber>, unless access is also trapped by <register_link state="AArch32" id="AArch32-hcptr.xml">HCPTR</register_link> which takes priority.</content>
</listitem><listitem><content>MRC access to the following registers are trapped to EL2, reported using EC syndrome value <hexnumber>0x03</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-id_pfr0.xml">ID_PFR0</register_link>, <register_link state="AArch32" id="AArch32-id_pfr1.xml">ID_PFR1</register_link>, <register_link state="AArch32" id="AArch32-id_pfr2.xml">ID_PFR2</register_link>, <register_link state="AArch32" id="AArch32-id_dfr0.xml">ID_DFR0</register_link>, <register_link state="AArch32" id="AArch32-id_afr0.xml">ID_AFR0</register_link>, <register_link state="AArch32" id="AArch32-id_mmfr0.xml">ID_MMFR0</register_link>, <register_link state="AArch32" id="AArch32-id_mmfr1.xml">ID_MMFR1</register_link>, <register_link state="AArch32" id="AArch32-id_mmfr2.xml">ID_MMFR2</register_link>, <register_link state="AArch32" id="AArch32-id_mmfr3.xml">ID_MMFR3</register_link>, <register_link state="AArch32" id="AArch32-id_isar0.xml">ID_ISAR0</register_link>, <register_link state="AArch32" id="AArch32-id_isar1.xml">ID_ISAR1</register_link>, <register_link state="AArch32" id="AArch32-id_isar2.xml">ID_ISAR2</register_link>, <register_link state="AArch32" id="AArch32-id_isar3.xml">ID_ISAR3</register_link>, <register_link state="AArch32" id="AArch32-id_isar4.xml">ID_ISAR4</register_link>, and <register_link state="AArch32" id="AArch32-id_isar5.xml">ID_ISAR5</register_link>.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_FGT">FEAT_FGT</xref> is implemented:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-id_mmfr4.xml">ID_MMFR4</register_link> and <register_link state="AArch32" id="AArch32-id_mmfr5.xml">ID_MMFR5</register_link>.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-id_isar6.xml">ID_ISAR6</register_link>.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-id_dfr1.xml">ID_DFR1</register_link>.</content>
</listitem><listitem><content>This field traps all MRC accesses to encodings in the following range that are not already mentioned in this field description: coproc == p15, opc1 == 0, CRn == c0, CRm == {c2-c7}, opc2 == {0-7}.</content>
</listitem></list>
</content>
</listitem><listitem><content>If <xref linkend="#FEAT_FGT">FEAT_FGT</xref> is not implemented:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-id_mmfr4.xml">ID_MMFR4</register_link> and <register_link state="AArch32" id="AArch32-id_mmfr5.xml">ID_MMFR5</register_link> are trapped to EL2, unless implemented as RAZ, when it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether accesses to <register_link state="AArch32" id="AArch32-id_mmfr4.xml">ID_MMFR4</register_link> or <register_link state="AArch32" id="AArch32-id_mmfr5.xml">ID_MMFR5</register_link> are trapped.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-id_isar6.xml">ID_ISAR6</register_link> is trapped to EL2, unless implemented as RAZ, when it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether accesses to <register_link state="AArch32" id="AArch32-id_isar6.xml">ID_ISAR6</register_link> are trapped to EL2.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-id_dfr1.xml">ID_DFR1</register_link> is trapped to EL2, unless implemented as RAZ, when it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether accesses to <register_link state="AArch32" id="AArch32-id_dfr1.xml">ID_DFR1</register_link> are trapped to EL2.</content>
</listitem><listitem><content>Otherwise, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether this bit traps all MRC accesses to registers in the following range not already mentioned in this field description with coproc == p15, opc1 == 0, CRn == c0, CRm == {c2-c7}, opc2 == {0-7}.</content>
</listitem></list>
</content>
</listitem></list>
</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The specified EL1 read accesses to ID group 3 registers are trapped to EL2, when EL2 is enabled in the current Security state.</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-17_17" 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>TID2</field_name>
    <field_msb>17</field_msb>
    <field_lsb>17</field_lsb>
    <rel_range>17</rel_range>
    <field_description order="before"><para>Trap ID group 2. Traps the following register accesses to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>If EL1 is using AArch64, reads of <register_link state="AArch64" id="AArch64-ctr_el0.xml">CTR_EL0</register_link>, <register_link state="AArch64" id="AArch64-ccsidr_el1.xml">CCSIDR_EL1</register_link>, <register_link state="AArch64" id="AArch64-ccsidr2_el1.xml">CCSIDR2_EL1</register_link>, <register_link state="AArch64" id="AArch64-clidr_el1.xml">CLIDR_EL1</register_link>, and <register_link state="AArch64" id="AArch64-csselr_el1.xml">CSSELR_EL1</register_link> are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content>If EL0 is using AArch64 and the value of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCT is not 0, reads of <register_link state="AArch64" id="AArch64-ctr_el0.xml">CTR_EL0</register_link> are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>. If the value of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.UCT is 0, then EL0 reads of <register_link state="AArch64" id="AArch64-ctr_el0.xml">CTR_EL0</register_link> are trapped to EL1 and the resulting exception takes precedence over this trap.</content>
</listitem><listitem><content>If EL1 is using AArch64, writes to <register_link state="AArch64" id="AArch64-csselr_el1.xml">CSSELR_EL1</register_link> are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content>If EL1 is using AArch32, reads of <register_link state="AArch32" id="AArch32-ctr.xml">CTR</register_link>, <register_link state="AArch32" id="AArch32-ccsidr.xml">CCSIDR</register_link>, <register_link state="AArch32" id="AArch32-ccsidr2.xml">CCSIDR2</register_link>, <register_link state="AArch32" id="AArch32-clidr.xml">CLIDR</register_link>, and <register_link state="AArch32" id="AArch32-csselr.xml">CSSELR</register_link> are trapped to EL2, reported using EC syndrome value <hexnumber>0x03</hexnumber>.</content>
</listitem><listitem><content>If EL1 is using AArch32, writes to <register_link state="AArch32" id="AArch32-csselr.xml">CSSELR</register_link> are trapped to EL2, reported using EC syndrome value <hexnumber>0x03</hexnumber>.</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The specified EL1 and EL0 accesses to ID group 2 registers are trapped to EL2, when EL2 is enabled in the current Security state.</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-16_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>TID1</field_name>
    <field_msb>16</field_msb>
    <field_lsb>16</field_lsb>
    <rel_range>16</rel_range>
    <field_description order="before"><para>Trap ID group 1. Traps EL1 reads of the following registers to EL2, when EL2 is enabled in the current Security state as follows:</para>
<list type="unordered">
<listitem><content>In AArch64 state, accesses of <register_link state="AArch64" id="AArch64-revidr_el1.xml">REVIDR_EL1</register_link> and <register_link state="AArch64" id="AArch64-aidr_el1.xml">AIDR_EL1</register_link>, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content>When <xref linkend="#FEAT_SME">FEAT_SME</xref> is implemented, accesses of <register_link state="AArch64" id="AArch64-smidr_el1.xml">SMIDR_EL1</register_link>, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</content>
</listitem><listitem><content>In AArch32 state, accesses of <register_link state="AArch32" id="AArch32-tcmtr.xml">TCMTR</register_link>, <register_link state="AArch32" id="AArch32-tlbtr.xml">TLBTR</register_link>, <register_link state="AArch32" id="AArch32-revidr.xml">REVIDR</register_link>, and <register_link state="AArch32" id="AArch32-aidr.xml">AIDR</register_link>, reported using EC syndrome value <hexnumber>0x03</hexnumber>.</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The specified EL1 read accesses to ID group 1 registers are trapped to EL2, when EL2 is enabled in the current Security state.</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_15-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>TID0</field_name>
    <field_msb>15</field_msb>
    <field_lsb>15</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap ID group 0. Traps the following register accesses to EL2:</para>
<list type="unordered">
<listitem><content>EL1 reads of the <register_link state="AArch32" id="AArch32-jidr.xml">JIDR</register_link>, reported using EC syndrome value <hexnumber>0x05</hexnumber>.</content>
</listitem><listitem><content>If the <register_link state="AArch32" id="AArch32-jidr.xml">JIDR</register_link> is RAZ from EL0, EL0 reads of the <register_link state="AArch32" id="AArch32-jidr.xml">JIDR</register_link>, reported using EC syndrome value <hexnumber>0x05</hexnumber>.</content>
</listitem><listitem><content>EL1 accesses using VMRS of the <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link>, reported using EC syndrome value <hexnumber>0x08</hexnumber>.</content>
</listitem></list>
<note><list type="unordered"><listitem><content>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the <register_link state="AArch32" id="AArch32-jidr.xml">JIDR</register_link> is RAZ or <arm-defined-word>UNDEFINED</arm-defined-word> at EL0. If it is <arm-defined-word>UNDEFINED</arm-defined-word> at EL0, then any resulting exception takes precedence over this trap.</content></listitem><listitem><content>The <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link> is not accessible at EL0 using AArch32.</content></listitem><listitem><content>Writes to the <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link> are ignored, and not trapped by this control.</content></listitem></list></note></field_description>
    <field_description order="after">
      <para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The specified EL1 read accesses to ID group 0 registers are trapped to EL2, when EL2 is enabled in the current Security state.</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_AA32 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-15_15-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>15</field_msb>
    <field_lsb>15</field_lsb>
    <rel_range>15</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-14_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>TWE</field_name>
    <field_msb>14</field_msb>
    <field_lsb>14</field_lsb>
    <rel_range>14</rel_range>
    <field_description order="before"><para>Traps EL0 and EL1 execution of WFE instructions to EL2, when EL2 is enabled in the current Security state, from both Execution states, reported using EC syndrome value <hexnumber>0x01</hexnumber>.</para>
<para>When <xref linkend="#FEAT_WFxT">FEAT_WFxT</xref> is implemented, this trap also applies to the WFET instruction.</para></field_description>
    <field_description order="after"><para>In AArch32 state, the attempted execution of a conditional WFE instruction is trapped only if the instruction passes its condition code check.</para>
<note><para>Since a WFE can complete at any time, even without a Wakeup event, the traps on WFE are not guaranteed to be taken, even if the WFE is executed when there is no Wakeup event. The only guarantee is that if the instruction does not complete in finite time in the absence of a Wakeup event, the trap will be taken.</para></note><para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
<para>For more information about when WFE instructions can cause the PE to enter a low-power state, see <xref linkend="#BEIJHBBD">'Wait for Event mechanism and Send event'</xref>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Any attempt to execute a WFE instruction at EL1 or EL0 is trapped to EL2, when EL2 is enabled in the current Security state, if the instruction would otherwise have caused the PE to enter a low-power state and it is not trapped by <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.nTWE or <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.nTWE.</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_13" 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>TWI</field_name>
    <field_msb>13</field_msb>
    <field_lsb>13</field_lsb>
    <rel_range>13</rel_range>
    <field_description order="before"><para>Traps EL0 and EL1 execution of WFI instructions to EL2, when EL2 is enabled in the current Security state, from both Execution states, reported using EC syndrome value <hexnumber>0x01</hexnumber>.</para>
<para>When <xref linkend="#FEAT_WFxT">FEAT_WFxT</xref> is implemented, this trap also applies to the WFIT instruction.</para></field_description>
    <field_description order="after"><para>In AArch32 state, the attempted execution of a conditional WFI instruction is trapped only if the instruction passes its condition code check.</para>
<note><para>Since a WFI can complete at any time, even without a Wakeup event, the traps on WFI are not guaranteed to be taken, even if the WFI is executed when there is no Wakeup event. The only guarantee is that if the instruction does not complete in finite time in the absence of a Wakeup event, the trap will be taken.</para></note><para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para>
<para>For more information about when WFI instructions can cause the PE to enter a low-power state, see <xref linkend="#BEIJBEJD">'Wait for Interrupt'</xref>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Any attempt to execute a WFI instruction at EL0 or EL1 is trapped to EL2, when EL2 is enabled in the current Security state, if the instruction would otherwise have caused the PE to enter a low-power state and it is not trapped by <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.nTWI or <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.nTWI.</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-12_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>DC</field_name>
    <field_msb>12</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>12</rel_range>
    <field_description order="before">
      <para>Default Cacheability.</para>
    </field_description>
    <field_description order="after"><para>This field has no effect on the EL2, EL2&amp;0, and EL3 translation regimes.</para>
<para>This bit is permitted to be cached in a TLB.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</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 EL1&amp;0 translation regime.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>In any Security state:</para>
<list type="unordered">
<listitem><content>When EL1 is using AArch64, the PE behaves as if the value of the <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.M field is 0 for all purposes other than returning the value of a direct read of <register_link state="AArch64" id="AArch64-sctlr_el1.xml">SCTLR_EL1</register_link>.</content>
</listitem><listitem><content>When EL1 is using AArch32, the PE behaves as if the value of the <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.M field is 0 for all purposes other than returning the value of a direct read of <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.</content>
</listitem><listitem><content>The PE behaves as if the value of the HCR_EL2.VM field is 1 for all purposes other than returning the value of a direct read of HCR_EL2.</content>
</listitem><listitem><content>The memory type produced by stage 1 of the EL10 translation regime is Normal Non-Shareable, Inner Write-Back Read-Allocate Write-Allocate, Outer Write-Back Read-Allocate Write-Allocate.</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>
  <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>BSU</field_name>
    <field_msb>11</field_msb>
    <field_lsb>10</field_lsb>
    <rel_range>11:10</rel_range>
    <field_description order="before">
      <para>Barrier Shareability upgrade. This field determines the minimum shareability domain that is applied to any barrier instruction executed from EL1 or EL0:</para>
    </field_description>
    <field_description order="after"><para>This value is combined with the specified level of the barrier held in its instruction, using the same principles as combining the shareability attributes from two stages of address translation.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>No effect.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Inner 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>Full system.</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_9" 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>FB</field_name>
    <field_msb>9</field_msb>
    <field_lsb>9</field_lsb>
    <rel_range>9</rel_range>
    <field_description order="before"><para>Force broadcast. Causes the following Non-shareable invalidate instructions to be broadcast within the Inner Shareable domain when executed from EL1:</para>
<list type="unordered">
<listitem><content>In AArch32 state: <register_link state="AArch32" id="AArch32-bpiall.xml">BPIALL</register_link>, <register_link state="AArch32" id="AArch32-tlbiall.xml">TLBIALL</register_link>, <register_link state="AArch32" id="AArch32-tlbimva.xml">TLBIMVA</register_link>, <register_link state="AArch32" id="AArch32-tlbiasid.xml">TLBIASID</register_link>, <register_link state="AArch32" id="AArch32-dtlbiall.xml">DTLBIALL</register_link>, <register_link state="AArch32" id="AArch32-dtlbimva.xml">DTLBIMVA</register_link>, <register_link state="AArch32" id="AArch32-dtlbiasid.xml">DTLBIASID</register_link>, <register_link state="AArch32" id="AArch32-itlbiall.xml">ITLBIALL</register_link>, <register_link state="AArch32" id="AArch32-itlbimva.xml">ITLBIMVA</register_link>, <register_link state="AArch32" id="AArch32-itlbiasid.xml">ITLBIASID</register_link>, <register_link state="AArch32" id="AArch32-tlbimvaa.xml">TLBIMVAA</register_link>, <register_link state="AArch32" id="AArch32-iciallu.xml">ICIALLU</register_link>, <register_link state="AArch32" id="AArch32-tlbimval.xml">TLBIMVAL</register_link>, and <register_link state="AArch32" id="AArch32-tlbimvaal.xml">TLBIMVAAL</register_link>.</content>
</listitem><listitem><content>In AArch64 state:<list type="unordered">
<listitem><content>All <instruction>TLBI</instruction> instructions that are executable at EL1 and do not specify IS or OS.</content>
</listitem><listitem><content>All <instruction>TLBIP</instruction> instructions that are executable at EL1 and do not specify IS or OS.</content>
</listitem><listitem><content><instruction>IC IALLU</instruction>.</content>
</listitem></list>
</content>
</listitem></list>
<para>For more information, see <xref linkend="#AArch64.operations.tlb_maintenance">'A64 System instructions for TLB maintenance'</xref>.</para></field_description>
    <field_description order="after">
      <para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The specified instructions are not affected by this control.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>When one of the specified Non-shareable instructions is executed at EL1, the operation is broadcast within the Inner Shareable shareability domain.</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-8_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>VSE</field_name>
    <field_msb>8</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>8</rel_range>
    <field_description order="before">
      <para>Virtual SError exception.</para>
    </field_description>
    <field_description order="after"><para>The virtual SError exception is enabled only when HCR_EL2.TGE is 0 and either HCR_EL2.AMO is 1 or <xref linkend="#FEAT_DoubleFault2">FEAT_DoubleFault2</xref> is implemented and the Effective value of <register_link state="AArch64" id="AArch64-hcrx_el2.xml">HCRX_EL2</register_link>.TMEA is 1.</para>
<para>When <xref linkend="#FEAT_E3DSE">FEAT_E3DSE</xref> is implemented, virtual SError exceptions pended by this field have priority over delegated SError exceptions pended by <register_link state="AArch64" id="AArch64-scr_el3.xml">SCR_EL3</register_link>.DSE.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This mechanism is not making a virtual SError exception pending.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A virtual SError exception is pending because of this mechanism.</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_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>VI</field_name>
    <field_msb>7</field_msb>
    <field_lsb>7</field_lsb>
    <rel_range>7</rel_range>
    <field_description order="before">
      <para>Virtual IRQ Interrupt.</para>
    </field_description>
    <field_description order="after">
      <para>The virtual IRQ is enabled only when the value of HCR_EL2.{TGE, IMO} is {0, 1}.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This mechanism is not making a virtual IRQ pending.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A virtual IRQ is pending because of this mechanism.</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-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">
    <field_name>VF</field_name>
    <field_msb>6</field_msb>
    <field_lsb>6</field_lsb>
    <rel_range>6</rel_range>
    <field_description order="before">
      <para>Virtual FIQ Interrupt.</para>
    </field_description>
    <field_description order="after">
      <para>The virtual FIQ is enabled only when the value of HCR_EL2.{TGE, FMO} is {0, 1}.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This mechanism is not making a virtual FIQ pending.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>A virtual FIQ is pending because of this mechanism.</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-5_5" 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>AMO</field_name>
    <field_msb>5</field_msb>
    <field_lsb>5</field_lsb>
    <rel_range>5</rel_range>
    <field_description order="before">
      <para>Physical SError exception routing.</para>
    </field_description>
    <field_description order="after"><para>When executing at EL3, the value of HCR_EL2.AMO has no impact on the behavior of the PE.</para>
<para>When executing at Exception levels below EL3, and EL2 is not enabled in the current Security state, the Effective value of HCR_EL2.AMO is 0.</para>
<para>When the Effective value of HCR_EL2.TGE is 1, regardless of the value of the AMO bit, all of the following are true:</para>
<list type="unordered">
<listitem><content>Physical SError exceptions target EL2 unless they are routed to EL3.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_E3DSE">FEAT_E3DSE</xref> is implemented, delegated SError exceptions target EL2.</content>
</listitem><listitem><content>Virtual SError exceptions are disabled.</content>
</listitem></list>
<para>When executing at EL2 and the Effective value of HCR_EL2.{E2H, TGE} is {1, 0}, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the Effective value of HCR_EL2.AMO is 1 or the value programmed.</para>
<para>For more information, see <xref linkend="#BEIDHDHF">'Asynchronous exception routing'</xref>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>When executing at Exception levels below EL3 and the Effective value of HCR_EL2.TGE is 0:</para>
<list type="unordered">
<listitem><content>The routing of physical SError exceptions is unaffected by this mechanism.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_E3DSE">FEAT_E3DSE</xref> is implemented, then delegated SError exceptions enabled by <register_link state="AArch64" id="AArch64-scr_el3.xml">SCR_EL3</register_link>.DSE are not taken to EL2.</content>
</listitem><listitem><content>Virtual SError exceptions are not enabled by this mechanism.</content>
</listitem></list></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>When executing at Exception levels below EL3, EL2 is enabled in the current Security state, and the Effective value of HCR_EL2.TGE is 0:</para>
<list type="unordered">
<listitem><content>Physical SError exceptions are taken to EL2, unless they are routed to EL3.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_E3DSE">FEAT_E3DSE</xref> is implemented, then delegated SError exceptions enabled by <register_link state="AArch64" id="AArch64-scr_el3.xml">SCR_EL3</register_link>.DSE are taken to EL2.</content>
</listitem><listitem><content>Virtual SError exceptions are enabled.</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>
  <field id="fieldset_0-4_4" 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>IMO</field_name>
    <field_msb>4</field_msb>
    <field_lsb>4</field_lsb>
    <rel_range>4</rel_range>
    <field_description order="before">
      <para>Physical IRQ Routing.</para>
    </field_description>
    <field_description order="after"><para>When executing at EL3, the Effective value of HCR_EL2.IMO has no impact on the behavior of the PE.</para>
<para>When executing at Exception levels below EL3, and EL2 is not enabled in the current Security state, the Effective value of HCR_EL2.IMO is 0.</para>
<para>When the Effective value of HCR_EL2.TGE is 1, regardless of the value of the IMO bit, all of the following are true:</para>
<list type="unordered">
<listitem><content>Physical IRQ Interrupts target EL2 unless they are routed to EL3.</content>
</listitem><listitem><content>Virtual IRQ interrupts are disabled.</content>
</listitem></list>
<para>When executing at EL2 and the Effective value of HCR_EL2.{E2H, TGE} is {1, 0}, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the Effective value of HCR_EL2.IMO is 1 or the value programmed.</para>
<para>For more information, see <xref linkend="#BEIDHDHF">'Asynchronous exception routing'</xref>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>When executing at Exception levels below EL3 and the Effective value of HCR_EL2.TGE is 0:</para>
<list type="unordered">
<listitem><content>Physical IRQ interrupts are not taken to EL2.</content>
</listitem><listitem><content>Virtual IRQ interrupts are disabled.</content>
</listitem></list></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>When executing at Exception levels below EL3, EL2 is enabled in the current Security state, and the Effective value of HCR_EL2.TGE is 0:</para>
<list type="unordered">
<listitem><content>Physical IRQ exceptions are taken to EL2, unless they are routed to EL3.</content>
</listitem><listitem><content>Virtual IRQ interrupts are enabled.</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>
  <field id="fieldset_0-3_3" 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>FMO</field_name>
    <field_msb>3</field_msb>
    <field_lsb>3</field_lsb>
    <rel_range>3</rel_range>
    <field_description order="before">
      <para>Physical FIQ Routing.</para>
    </field_description>
    <field_description order="after"><para>When executing at EL3, the Effective value of HCR_EL2.FMO has no impact on the behavior of the PE.</para>
<para>When executing at Exception levels below EL3, and EL2 is not enabled in the current Security state, the Effective value of HCR_EL2.FMO is 0.</para>
<para>When the Effective value of HCR_EL2.TGE is 1, regardless of the value of the FMO bit, all of the following are true:</para>
<list type="unordered">
<listitem><content>Physical FIQ Interrupts target EL2 unless they are routed to EL3.</content>
</listitem><listitem><content>Virtual FIQ interrupts are disabled.</content>
</listitem></list>
<para>When executing at EL2 and the Effective value of HCR_EL2.{E2H, TGE} is {1, 0}, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the Effective value of HCR_EL2.FMO is 1 or the value programmed.</para>
<para>For more information, see <xref linkend="#BEIDHDHF">'Asynchronous exception routing'</xref>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description><para>When executing at Exception levels below EL3 and the Effective value of HCR_EL2.TGE is 0:</para>
<list type="unordered">
<listitem><content>Physical FIQ interrupts are not taken to EL2.</content>
</listitem><listitem><content>Virtual FIQ interrupts are disabled.</content>
</listitem></list></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description><para>When executing at Exception levels below EL3, EL2 is enabled in the current Security state, and the Effective value of HCR_EL2.TGE is 0:</para>
<list type="unordered">
<listitem><content>Physical FIQ exceptions are taken to EL2, unless they are routed to EL3.</content>
</listitem><listitem><content>Virtual FIQ interrupts are enabled.</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>
  <field id="fieldset_0-2_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">
    <field_name>PTW</field_name>
    <field_msb>2</field_msb>
    <field_lsb>2</field_lsb>
    <rel_range>2</rel_range>
    <field_description order="before">
      <para>Protected Table Walk. In the EL1&amp;0 translation regime, a translation table access made as part of a stage 1 translation table walk is subject to a stage 2 translation. The combining of the memory type attributes from the two stages of translation means the access might be made to a type of Device memory. If this occurs, then the value of this bit determines the behavior:</para>
    </field_description>
    <field_description order="after"><para>This bit is permitted to be cached in a TLB.</para>
<para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The translation table walk occurs as if it is to Normal Non-cacheable memory. This means it can be made speculatively.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The memory access generates a stage 2 Permission 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>
  <field id="fieldset_0-1_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">
    <field_name>SWIO</field_name>
    <field_msb>1</field_msb>
    <field_lsb>1</field_lsb>
    <rel_range>1</rel_range>
    <field_description order="before">
      <para>Set/Way Invalidation Override. Causes EL1 execution of the data cache invalidate by set/way instructions to perform a data cache clean and invalidate by set/way:</para>
    </field_description>
    <field_description order="after"><para>When the value of this bit is 1:</para>
<para>AArch32: <register_link state="AArch32" id="AArch32-dcisw.xml">DCISW</register_link> performs the same invalidation as a <register_link state="AArch32" id="AArch32-dccisw.xml">DCCISW</register_link> instruction.</para>
<para>AArch64: <register_link id="AArch64-dc-isw.xml" state="AArch64">DC ISW</register_link> performs the same invalidation as a <register_link id="AArch64-dc-cisw.xml" state="AArch64">DC CISW</register_link> instruction.</para>
<para>This bit can be implemented as <arm-defined-word>RES1</arm-defined-word>.</para>
<para>When HCR_EL2.TGE is 1, the PE ignores the value of this field for all purposes other than a direct read of this field.</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 operation of data cache invalidate by set/way instructions.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Data cache invalidate by set/way instructions perform a data cache clean and invalidate by set/way.</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-0_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>VM</field_name>
    <field_msb>0</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Virtualization enable. Enables stage 2 address translation for the EL1&amp;0 translation regime, when EL2 is enabled in the current Security state.</para>
    </field_description>
    <field_description order="after"><para>When the value of this bit is 1, data cache invalidate instructions executed at EL1 perform a data cache clean and invalidate. For the invalidate by set/way instruction this behavior applies regardless of the value of the HCR_EL2.SWIO bit.</para>
<para>This bit is permitted to be cached in a TLB.</para>
<para>When the Effective value of HCR_EL2.{E2H, TGE} is  {1, 1}, the Effective value of this field is 0.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>EL1&amp;0 stage 2 address translation disabled.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>EL1&amp;0 stage 2 address translation 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>
  <text_after_fields/>
</fields>




<reg_fieldset length="64">
  <fieldat id="fieldset_0-63_60-1" msb="63" lsb="60"/>
  <fieldat id="fieldset_0-59_59-1" msb="59" lsb="59"/>
  <fieldat id="fieldset_0-58_58-1" msb="58" lsb="58"/>
  <fieldat id="fieldset_0-57_57-1" msb="57" lsb="57"/>
  <fieldat id="fieldset_0-56_56-1" msb="56" lsb="56"/>
  <fieldat id="fieldset_0-55_55-1" msb="55" lsb="55"/>
  <fieldat id="fieldset_0-54_54-1" msb="54" lsb="54"/>
  <fieldat id="fieldset_0-53_53-1" msb="53" lsb="53"/>
  <fieldat id="fieldset_0-52_52-1" msb="52" lsb="52"/>
  <fieldat id="fieldset_0-51_51-1" msb="51" lsb="51"/>
  <fieldat id="fieldset_0-50_50-1" msb="50" lsb="50"/>
  <fieldat id="fieldset_0-49_49-1" msb="49" lsb="49"/>
  <fieldat id="fieldset_0-48_48-1" msb="48" lsb="48"/>
  <fieldat id="fieldset_0-47_47-1" msb="47" lsb="47"/>
  <fieldat id="fieldset_0-46_46-1" msb="46" lsb="46"/>
  <fieldat id="fieldset_0-45_45-1" msb="45" lsb="45"/>
  <fieldat id="fieldset_0-44_44-1" msb="44" lsb="44"/>
  <fieldat id="fieldset_0-43_43-1" msb="43" lsb="43"/>
  <fieldat id="fieldset_0-42_42-1" msb="42" lsb="42"/>
  <fieldat id="fieldset_0-41_41-1" msb="41" lsb="41"/>
  <fieldat id="fieldset_0-40_40-1" msb="40" lsb="40"/>
  <fieldat id="fieldset_0-39_38" msb="39" lsb="38"/>
  <fieldat id="fieldset_0-37_37-1" msb="37" lsb="37"/>
  <fieldat id="fieldset_0-36_36-1" msb="36" lsb="36"/>
  <fieldat id="fieldset_0-35_35-1" msb="35" lsb="35"/>
  <fieldat id="fieldset_0-34_34-1" msb="34" lsb="34"/>
  <fieldat id="fieldset_0-33_33" msb="33" lsb="33"/>
  <fieldat id="fieldset_0-32_32" msb="32" lsb="32"/>
  <fieldat id="fieldset_0-31_31-1" msb="31" lsb="31"/>
  <fieldat id="fieldset_0-30_30" msb="30" lsb="30"/>
  <fieldat id="fieldset_0-29_29-1" msb="29" lsb="29"/>
  <fieldat id="fieldset_0-28_28" msb="28" lsb="28"/>
  <fieldat id="fieldset_0-27_27" msb="27" lsb="27"/>
  <fieldat id="fieldset_0-26_26" msb="26" lsb="26"/>
  <fieldat id="fieldset_0-25_25" msb="25" lsb="25"/>
  <fieldat id="fieldset_0-24_24" msb="24" lsb="24"/>
  <fieldat id="fieldset_0-23_23" msb="23" lsb="23"/>
  <fieldat id="fieldset_0-22_22" msb="22" lsb="22"/>
  <fieldat id="fieldset_0-21_21" 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_18" msb="18" lsb="18"/>
  <fieldat id="fieldset_0-17_17" msb="17" lsb="17"/>
  <fieldat id="fieldset_0-16_16" msb="16" lsb="16"/>
  <fieldat id="fieldset_0-15_15-1" msb="15" lsb="15"/>
  <fieldat id="fieldset_0-14_14" msb="14" lsb="14"/>
  <fieldat id="fieldset_0-13_13" msb="13" lsb="13"/>
  <fieldat id="fieldset_0-12_12" msb="12" lsb="12"/>
  <fieldat id="fieldset_0-11_10" msb="11" lsb="10"/>
  <fieldat id="fieldset_0-9_9" msb="9" lsb="9"/>
  <fieldat id="fieldset_0-8_8" msb="8" lsb="8"/>
  <fieldat id="fieldset_0-7_7" msb="7" lsb="7"/>
  <fieldat id="fieldset_0-6_6" msb="6" lsb="6"/>
  <fieldat id="fieldset_0-5_5" msb="5" lsb="5"/>
  <fieldat id="fieldset_0-4_4" msb="4" lsb="4"/>
  <fieldat id="fieldset_0-3_3" msb="3" lsb="3"/>
  <fieldat id="fieldset_0-2_2" msb="2" lsb="2"/>
  <fieldat id="fieldset_0-1_1" msb="1" lsb="1"/>
  <fieldat id="fieldset_0-0_0" msb="0" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>

      <access_mechanisms>
          






    
        
        <access_mechanism accessor="MRS HCR_EL2" type="SystemAccessor">
            <encoding>
            <access_instruction>MRS &lt;Xt&gt;, HCR_EL2</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b100"/>
                
                <enc n="CRn" v="0b0001"/>
                
                <enc n="CRm" v="0b0001"/>
                
                <enc n="op2" v="0b000"/>
            </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 {'1x1'} then
        X{64}(t) = NVMem(0x078);
    elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then
        AArch64_SystemAccessTrap(EL2, 0x18);
    else
        Undefined();
    end;
elsif PSTATE.EL == EL2 then
    X{64}(t) = HCR_EL2();
elsif PSTATE.EL == EL3 then
    X{64}(t) = HCR_EL2();
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MSRregister HCR_EL2" type="SystemAccessor">
            <encoding>
            <access_instruction>MSR HCR_EL2, &lt;Xt&gt;</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b100"/>
                
                <enc n="CRn" v="0b0001"/>
                
                <enc n="CRm" v="0b0001"/>
                
                <enc n="op2" v="0b000"/>
            </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 {'1x1'} then
        NVMem(0x078) = X{64}(t);
    elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then
        AArch64_SystemAccessTrap(EL2, 0x18);
    else
        Undefined();
    end;
elsif PSTATE.EL == EL2 then
    HCR_EL2() = X{64}(t);
elsif PSTATE.EL == EL3 then
    HCR_EL2() = 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>