<?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="AArch32" is_register="True" is_internal="True" is_stub_entry="False">
      <reg_short_name>HCR</reg_short_name>
        
        <reg_long_name>Hyp Configuration Register</reg_long_name>



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




          <reg_reset_value>
            <reg_reset_limited_to_el>EL2</reg_reset_limited_to_el>
            <reg_reset_limited_to_el>EL3</reg_reset_limited_to_el>

      </reg_reset_value>

      <reg_mappings>
        



    
      
      <reg_mapping>
        
  

    

  

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

      </reg_mapping>

      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>Provides configuration controls for virtualization, including defining whether various Non-secure operations are trapped to Hyp mode.</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>

      </reg_configuration>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>HCR is a 32-bit register.</para>
      </attributes_text>

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="32">
  <text_before_fields/>
  <field id="fieldset_0-31_31" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>31</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </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 Non-secure EL1 reads of the virtual memory control registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>MRC reads of the following registers are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber> and MRRC reads are trapped and reported using EC syndrome value <hexnumber>0x04</hexnumber>:</para>
<para><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>, <register_link state="AArch32" id="AArch32-contextidr.xml">CONTEXTIDR</register_link>.</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 EL1 read accesses to the specified Virtual Memory controls are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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.</para>
<para>Disables Non-secure EL1 and EL2 execution of HVC instructions, 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 Non-secure EL1.</para>
<para>The Undefined Instruction 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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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" rwtype="RES0">
    <field_msb>28</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>28</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </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 Non-secure EL0.</para>
    </field_description>
    <field_description order="after"><para>Also, when HCR.TGE is 1:</para>
<list type="unordered">
<listitem><content>If EL3 is using AArch32, an attempt to change from a Secure PL1 mode to a Non-secure EL1 mode by changing <register_link state="AArch32" id="AArch32-scr.xml">SCR</register_link>.NS from 0 to 1 results in <register_link state="AArch32" id="AArch32-scr.xml">SCR</register_link>.NS remaining as 0.</content>
</listitem><listitem><content>The <register_link state="AArch32" id="AArch32-hdcr.xml">HDCR</register_link>.{TDRA, TDOSA, TDA, TDE} bits are ignored and treated as being 1 other than for the purpose of a direct read of <register_link state="AArch32" id="AArch32-hdcr.xml">HDCR</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 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, this control has no effect on execution at EL0.</para>
<para>When EL2 is enabled in the current Security state, then:</para>
<list type="unordered">
<listitem><content>All exceptions that would be routed to EL1 are routed to EL2.</content>
</listitem><listitem><content>The <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.M bit 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>The HCR.{FMO, IMO, AMO} bits are treated as being 1 for all purposes other than returning the result of a direct read of HCR.</content>
</listitem><listitem><content>All virtual interrupts 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>Monitor mode execution of an MSR or CPS instruction that changes PSTATE.M to a Non-secure EL1 mode is an illegal change to PSTATE.M. For more information see <xref linkend="#CHDDFIGE">'Illegal changes to PSTATE.M'</xref>.</content>
</listitem></list></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 writes to the virtual memory control registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>MCR writes of the following registers are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber> and MCRR writes are trapped and reported using EC syndrome value <hexnumber>0x04</hexnumber>:</para>
<para><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>, <register_link state="AArch32" id="AArch32-contextidr.xml">CONTEXTIDR</register_link>.</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 EL1 write accesses to the specified virtual memory control registers are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 execution of a TLBI instruction to EL2, when EL2 is enabled in the current Security state.</para>
<para>MCR and MRC accesses to the following system instructions are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<para><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>, <register_link state="AArch32" id="AArch32-tlbimvaalis.xml">TLBIMVAALIS</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-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-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>, <register_link state="AArch32" id="AArch32-tlbimvaal.xml">TLBIMVAAL</register_link></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 EL1 accesses to the specified TLB maintenance instructions are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 execution of those cache maintenance instructions to EL2, when EL2 is enabled in the current Security state.</para>
<para>MRC and MCR accesses of the following system instructions are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<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>, <register_link state="AArch32" id="AArch32-dccmvau.xml">DCCMVAU</register_link>.</content>
</listitem></list>
<note><para>An Undefined Instruction exception generated 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>If the Point of Unification is before any level of data cache, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the execution of any data or unified cache clean by VA to the Point of Unification instruction can be trapped when the value of this control is 1.</para>
<para>If the Point of Unification is before any level of instruction cache, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the execution of any instruction cache invalidate to the Point of Unification instruction can be trapped when the value of this control is 1.</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 EL1 execution of the specified cache maintenance instructions is trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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>TPC</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. Traps Non-secure EL1 execution of those cache maintenance instructions to EL2, when EL2 is enabled in the current Security state.</para>
<para>MRC and MCR accesses of the following system instructions are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<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>, <register_link state="AArch32" id="AArch32-dccmvac.xml">DCCMVAC</register_link>.</content>
</listitem></list>
<note><para>An Undefined Instruction exception generated 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>If the Point of Coherency is before any level of data cache, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether the execution of any data or unified cache clean, invalidate, or clean and invalidate instruction that operates by VA to the point of coherency can be trapped when the value of this control is 1.</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 EL1 execution of the specified cache maintenance instructions is trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 execution of those cache maintenance instructions by set/way to EL2, when EL2 is enabled in the current Security state.</para>
<para>MRC and MCR accesses of the following system instructions are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<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>, <register_link state="AArch32" id="AArch32-dccisw.xml">DCCISW</register_link>.</content>
</listitem></list>
<note><para>An Undefined Instruction exception generated 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_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 EL1 execution of the specified cache maintenance instructions is trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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>TAC</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 Non-secure EL1 accesses to the Auxiliary Control Registers to EL2, when EL2 is enabled in the current Security state, from both Execution states.</para>
<para>MRC and MCR accesses of the following registers are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<para><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>.</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 EL1 accesses to the specified registers are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 accesses to the encodings for <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> System Registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>MRC and MCR accesses of the following encodings are trapped and reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<list type="unordered">
<listitem><content>All coproc==p15, CRn==c9, Opcode1 = {0-7}, CRm == {c0-c2, c5-c8}, opcode2 == {0-7}.</content>
</listitem><listitem><content>All coproc==p15, CRn==c10, Opcode1 =={0-7}, CRm == {c0, c1, c4, c8}, opcode2 == {0-7}.</content>
</listitem><listitem><content>All coproc==p15, CRn==c11, Opcode1=={0-7}, CRm == {c0-c8, c15}, opcode2 == {0-7}.</content>
</listitem></list></field_description>
    <field_description order="after">
      <para>When HCR.TIDCP is set to 1, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether any of this functionality accessed from Non-secure EL0 is trapped to EL2. Otherwise, it is <arm-defined-word>UNDEFINED</arm-defined-word> and the PE takes an Undefined Instruction exception to Non-secure Undefined mode.</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 EL1 accesses to the specified System register encodings for <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> functionality are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 SMC instructions. Traps Non-secure EL1 execution of SMC instructions to Hyp mode.</para>
    </field_description>
    <field_description order="after"><para>The Armv8-A architecture permits, but does not require, this trap to apply to conditional SMC instructions that fail their condition code check, in the same way as with traps on other conditional instructions.</para>
<note><list type="unordered"><listitem><content>This trap is implemented only if the implementation includes EL3.</content></listitem><listitem><content>SMC instructions are always <arm-defined-word>UNDEFINED</arm-defined-word> at PL0.</content></listitem><listitem><content>This bit traps execution of the SMC instruction, reported using EC syndrome value <hexnumber>0x13</hexnumber>. It is not a routing control for the SMC exception. Hyp Trap exceptions and SMC exceptions have different preferred return addresses.</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>Any attempt to execute an SMC instruction at Non-secure EL1 is trapped to Hyp mode, regardless of the value of <register_link state="AArch32" id="AArch32-scr.xml">SCR</register_link>.SCD.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure 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>
<para>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>, 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.</para>
</content>
</listitem><listitem><content>
<para>MRC access to the following registers are reported using EC syndrome value <hexnumber>0x03</hexnumber>:</para>
<list type="unordered">
<listitem><content>
<para><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>.</para>
</content>
</listitem><listitem><content>
<para>If <xref linkend="#FEAT_FGT">FEAT_FGT</xref> is implemented:</para>
<list type="unordered">
<listitem><content>
<para><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.</para>
</content>
</listitem><listitem><content>
<para><register_link state="AArch32" id="AArch32-id_isar6.xml">ID_ISAR6</register_link> is trapped to EL2.</para>
</content>
</listitem><listitem><content>
<para><register_link state="AArch32" id="AArch32-id_dfr1.xml">ID_DFR1</register_link> is trapped to EL2.</para>
</content>
</listitem><listitem><content>
<para>This field traps all MRC accesses to registers 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}.</para>
</content>
</listitem></list>
</content>
</listitem><listitem><content>
<para>If <xref linkend="#FEAT_FGT">FEAT_FGT</xref> is not implemented:</para>
<list type="unordered">
<listitem><content>
<para><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.</para>
</content>
</listitem><listitem><content>
<para><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.</para>
</content>
</listitem><listitem><content>
<para><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.</para>
</content>
</listitem><listitem><content>
<para>Otherwise, it is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether this bit traps MRC accesses to registers not already mentioned, with coproc == p15, opc1 == 0, CRn == c0, CRm == {c2-c7}, opc2 == {0-7}.</para>
</content>
</listitem></list>
</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>The specified Non-secure EL1 read accesses to ID group 3 registers are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 MRC and MCR accesses to EL2, reported using EC syndrome value <hexnumber>0x03</hexnumber>, when EL2 is enabled in the current Security state:</para>
<list type="unordered">
<listitem><content>Non-secure EL1 and EL0 reads of the <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>.</content>
</listitem><listitem><content>Non-secure EL1 and EL0 writes to the <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 Non-secure EL1 and EL0 accesses to ID group 2 registers are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 MRC reads of the following registers to EL2, reported using EC syndrome value <hexnumber>0x03</hexnumber>, when EL2 is enabled in the current Security state:</para>
<para><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>, <register_link state="AArch32" id="AArch32-aidr.xml">AIDR</register_link>.</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 Non-secure EL1 read accesses to ID group 1 registers are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-15_15" 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>TID0</field_name>
    <field_msb>15</field_msb>
    <field_lsb>15</field_lsb>
    <rel_range>15</rel_range>
    <field_description order="before"><para>Trap ID group 0. Traps the following register accesses to EL2, when EL2 is enabled in the current Security state:</para>
<list type="unordered">
<listitem><content>Non-secure EL1 VMRS reads of <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link> reported using EC syndrome value <hexnumber>0x08</hexnumber>.</content>
</listitem><listitem><content>Non-secure EL0 and EL1 MCR and MRC accesses of <register_link state="AArch32" id="AArch32-jidr.xml">JIDR</register_link> reported using EC syndrome value <hexnumber>0x05</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 the Undefined Instruction 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.</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_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 Non-secure EL1 read accesses to ID group 0 registers are trapped to EL2.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </field_reset>
    </field_resets>
  </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 Non-secure EL0 and EL1 execution of WFE instructions to EL2, reported using EC syndrome value <hexnumber>0x01</hexnumber>, when EL2 is enabled in the current Security state.</para>
    </field_description>
    <field_description order="after"><para>The attempted execution of a conditional WFE instruction is only trapped 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></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 Non-secure EL0 or EL1 is trapped to EL2, 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.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL0 and EL1 execution of WFI instructions to EL2, reported using EC syndrome value <hexnumber>0x01</hexnumber>, when EL2 is enabled in the current Security state.</para>
    </field_description>
    <field_description order="after"><para>The attempted execution of a conditional WFI instruction is only trapped 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></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 Non-secure EL0 or EL1 is trapped to EL2, 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.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 and EL3 translation regimes.</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 has no effect on the Non-secure 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 Non-secure state:</para>
<list type="unordered">
<listitem><content>The <register_link state="AArch32" id="AArch32-sctlr.xml">SCTLR</register_link>.M field behaves as 0 for all purposes other than a direct read of the value of the field.</content>
</listitem><listitem><content>The HCR.VM field behaves as 1 for all purposes other than a direct read of the value of the field.</content>
</listitem><listitem><content>The memory type produced by the first stage of the EL1&amp;0 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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1 or Non-secure 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>
    </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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'00'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 instructions to be broadcast within the Inner Shareable domain when executed from Non-secure EL1:</para>
<para><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>, <register_link state="AArch32" id="AArch32-tlbimvaal.xml">TLBIMVAAL</register_link>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This field has no effect on the operation of the specified instructions.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>When one of the specified instruction is executed at Non-secure EL1, the instruction 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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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>VA</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 the value of HCR.{TGE, AMO} is {0, 1}.</para>
<para>The Guest OS cannot distinguish the virtual exception from the corresponding physical exception.</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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 exception.</para>
    </field_description>
    <field_description order="after"><para>The virtual IRQ is enabled only when the value of HCR.{TGE, IMO} is {0, 1}.</para>
<para>The Guest OS cannot distinguish the virtual exception from the corresponding physical exception.</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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 exception.</para>
    </field_description>
    <field_description order="after"><para>The virtual FIQ is enabled only when the value of HCR.{TGE, FMO} is {0, 1}.</para>
<para>The Guest OS cannot distinguish the virtual exception from the corresponding physical exception.</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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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>SError exception Mask Override. When this bit is set to 1, it overrides the effect of PSTATE.A, and enables virtual exception signaling by the VA bit.</para>
<para>If the value of HCR.TGE is 0, then virtual SError exceptions are enabled in Non-secure state.</para>
<para>If the value of HCR.TGE is 1, then in Non-secure state the HCR.AMO bit behaves as 1 for all purposes other than a direct read of the value of the bit.</para></field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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>IRQ Mask Override. When this bit is set to 1, it overrides the effect of PSTATE.I, and enables virtual exception signaling by the VI bit.</para>
<para>If the value of HCR.TGE is 0, then Virtual IRQ interrupts are enabled in the Non-secure state.</para>
<para>If the value of HCR.TGE is 1, then in Non-secure state the HCR.IMO bit behaves as 1 for all purposes other than a direct read of the value of the bit.</para></field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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>FIQ Mask Override. When this bit is set to 1, it overrides the effect of PSTATE.F, and enables virtual exception signaling by the VF bit.</para>
<para>If the value of HCR.TGE is 0, then Virtual FIQ interrupts are enabled in the Non-secure state.</para>
<para>If the value of HCR.TGE is 1, then in Non-secure state the HCR.FMO bit behaves as 1 for all purposes other than a direct read of the value of the bit.</para></field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure PL1&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>
    </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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure 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 this bit is set to 1, <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>As a result of changes to the behavior of <register_link state="AArch32" id="AArch32-dcisw.xml">DCISW</register_link>, this bit is redundant in Armv8. This bit can be implemented as <arm-defined-word>RES1</arm-defined-word>.</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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </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 Non-secure EL1&amp;0 translation regime.</para>
    </field_description>
    <field_description order="after"><para>If the HCR.DC bit is set to 1, then the behavior of the PE when executing in a Non-secure mode other than Hyp mode is consistent with HCR.VM being 1, regardless of the actual value of HCR.VM, other than the value returned by an explicit read of HCR.VM.</para>
<para>When the value of this bit is 1, data cache invalidate instructions executed at Non-secure 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.SWIO bit.</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>Non-secure 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>Non-secure 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_conditions>
          <field_reset_condition condition="the highest implemented Exception level is EL3 or the highest implemented Exception level is EL2">
            <field_reset>
              <field_reset_number>'0'</field_reset_number>
            </field_reset>
          </field_reset_condition>
          <field_reset_condition>
            <field_reset>
              <field_reset_standard_text>AU</field_reset_standard_text>
            </field_reset>
          </field_reset_condition>
        </field_reset_conditions>
      </field_reset>
    </field_resets>
  </field>
  <text_after_fields/>
</fields>




<reg_fieldset length="32">
  <fieldat id="fieldset_0-31_31" 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" 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="MRC HCR" type="SystemAccessor">
            <encoding>
            <access_instruction>MRC{&lt;c&gt;}{&lt;q&gt;} &lt;coproc&gt;, {#}&lt;opc1&gt;, &lt;Rt&gt;, &lt;CRn&gt;, &lt;CRm&gt;{, {#}&lt;opc2&gt;}</access_instruction>
                
                <enc n="coproc" v="0b1111"/>
                
                <enc n="opc1" v="0b100"/>
                
                <enc n="CRn" v="0b0001"/>
                
                <enc n="CRm" v="0b0001"/>
                
                <enc n="opc2" v="0b000"/>
            </encoding>
            <access_permission>
                <ps name="MRC" sections="1" secttype="access_permission">
                <pstext>
if !IsFeatureImplemented(FEAT_AA32EL2) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_AA64EL2) &amp;&amp; !ELUsingAArch32(EL2) &amp;&amp; HSTR_EL2().T1 == '1' then
        AArch64_AArch32SystemAccessTrap(EL2, 0x03);
    elsif EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_AA32EL2) &amp;&amp; ELUsingAArch32(EL2) &amp;&amp; HSTR().T1 == '1' then
        AArch32_TakeHypTrapException(0x03);
    else
        Undefined();
    end;
elsif PSTATE.EL == EL2 then
    R(t) = HCR();
elsif PSTATE.EL == EL3 then
    if SCR().NS == '0' then
        Undefined();
    else
        R(t) = HCR();
    end;
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MCR HCR" type="SystemAccessor">
            <encoding>
            <access_instruction>MCR{&lt;c&gt;}{&lt;q&gt;} &lt;coproc&gt;, {#}&lt;opc1&gt;, &lt;Rt&gt;, &lt;CRn&gt;, &lt;CRm&gt;{, {#}&lt;opc2&gt;}</access_instruction>
                
                <enc n="coproc" v="0b1111"/>
                
                <enc n="opc1" v="0b100"/>
                
                <enc n="CRn" v="0b0001"/>
                
                <enc n="CRm" v="0b0001"/>
                
                <enc n="opc2" v="0b000"/>
            </encoding>
            <access_permission>
                <ps name="MCR" sections="1" secttype="access_permission">
                <pstext>
if !IsFeatureImplemented(FEAT_AA32EL2) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_AA64EL2) &amp;&amp; !ELUsingAArch32(EL2) &amp;&amp; HSTR_EL2().T1 == '1' then
        AArch64_AArch32SystemAccessTrap(EL2, 0x03);
    elsif EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_AA32EL2) &amp;&amp; ELUsingAArch32(EL2) &amp;&amp; HSTR().T1 == '1' then
        AArch32_TakeHypTrapException(0x03);
    else
        Undefined();
    end;
elsif PSTATE.EL == EL2 then
    HCR() = R(t);
elsif PSTATE.EL == EL3 then
    if SCR().NS == '0' then
        Undefined();
    else
        HCR() = R(t);
    end;
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>