<?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>CPTR_EL2</reg_short_name>
        
        <reg_long_name>Architectural Feature Trap Register (EL2)</reg_long_name>



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




          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        



    
      
      <reg_mapping>
        
  

    

  

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

      </reg_mapping>

      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>Controls trapping to EL2 of accesses to <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link>, <register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link>, trace, Activity Monitor, 
SME, Streaming SVE, 
SVE, 
and Advanced SIMD and floating-point functionality.</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>This register has no effect if EL2 is not enabled in the current Security state.</para>
      </configuration_text>

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

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="64">
  <fields_condition>When EffectiveHCR_EL2_E2H() == '1'</fields_condition>
  <fields_instance>EffectiveHCR_EL2_E2H() == '1'</fields_instance>
  <text_before_fields/>
  <field id="fieldset_0-63_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" rwtype="RES0">
    <field_msb>63</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>63:32</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-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">
    <field_name>TCPAC</field_name>
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>31</rel_range>
    <field_description order="before"><para>In AArch64 state, traps accesses to <register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link> from EL1 to EL2, when EL2 is enabled in the current Security state. The exception is reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
<para>In AArch32 state, traps accesses to <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link> from EL1 to EL2, when EL2 is enabled in the current Security state. The exception is reported using EC syndrome value <hexnumber>0x03</hexnumber>.</para></field_description>
    <field_description order="after"><para>When the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, this control does not cause any instructions to be trapped.</para>
<note><para><register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link> and <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link> are not accessible 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 accesses to <register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link> and <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link> 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_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.TCPAC == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_0-30_30-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TAM</field_name>
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap Activity Monitor access. Traps EL1 and EL0 accesses to all Activity Monitors System registers to EL2, as follows:</para>
<list type="unordered">
<listitem><content>
<para>In AArch64 state, accesses to the following registers are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-amuserenr_el0.xml">AMUSERENR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcfgr_el0.xml">AMCFGR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcgcr_el0.xml">AMCGCR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenclr0_el0.xml">AMCNTENCLR0_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenclr1_el0.xml">AMCNTENCLR1_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenset0_el0.xml">AMCNTENSET0_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenset1_el0.xml">AMCNTENSET1_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcr_el0.xml">AMCR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amevcntr0n_el0.xml">AMEVCNTR0&lt;n&gt;_EL0</register_link>, <register_link state="AArch64" id="AArch64-amevcntr1n_el0.xml">AMEVCNTR1&lt;n&gt;_EL0</register_link>, <register_link state="AArch64" id="AArch64-amevtyper0n_el0.xml">AMEVTYPER0&lt;n&gt;_EL0</register_link>, and <register_link state="AArch64" id="AArch64-amevtyper1n_el0.xml">AMEVTYPER1&lt;n&gt;_EL0</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MRC or MCR accesses to the following registers 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-amuserenr.xml">AMUSERENR</register_link>, <register_link state="AArch32" id="AArch32-amcfgr.xml">AMCFGR</register_link>, <register_link state="AArch32" id="AArch32-amcgcr.xml">AMCGCR</register_link>, <register_link state="AArch32" id="AArch32-amcntenclr0.xml">AMCNTENCLR0</register_link>, <register_link state="AArch32" id="AArch32-amcntenclr1.xml">AMCNTENCLR1</register_link>, <register_link state="AArch32" id="AArch32-amcntenset0.xml">AMCNTENSET0</register_link>, <register_link state="AArch32" id="AArch32-amcntenset1.xml">AMCNTENSET1</register_link>, <register_link state="AArch32" id="AArch32-amcr.xml">AMCR</register_link>, <register_link state="AArch32" id="AArch32-amevtyper0n.xml">AMEVTYPER0&lt;n&gt;</register_link>, and <register_link state="AArch32" id="AArch32-amevtyper1n.xml">AMEVTYPER1&lt;n&gt;</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MRRC or MCRR accesses to <register_link state="AArch32" id="AArch32-amevcntr0n.xml">AMEVCNTR0&lt;n&gt;</register_link> and <register_link state="AArch32" id="AArch32-amevcntr1n.xml">AMEVCNTR1&lt;n&gt;</register_link>, are trapped to EL2, reported using EC syndrome value <hexnumber>0x04</hexnumber>.</para>
</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Accesses from EL1 and EL0 to Activity Monitors System registers are not trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Accesses from EL1 and EL0 to Activity Monitors System 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_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.TAM == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_AMUv1 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-30_30-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>30</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-29_29-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>E0POE</field_name>
    <field_msb>29</field_msb>
    <field_lsb>29</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Enable access to <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link>.</para>
<para>Traps EL0 accesses to <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link> to EL2, from AArch64 state only. The exception is reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control causes EL0 access to <register_link state="AArch64" id="AArch64-por_el0.xml">POR_EL0</register_link> to be trapped.</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>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.E0POE == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_S1POE is implemented</fields_condition>
  </field>
  <field id="fieldset_0-29_29-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>29</field_msb>
    <field_lsb>29</field_lsb>
    <rel_range>29</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-28_28-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TTA</field_name>
    <field_msb>28</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Traps System register accesses to all implemented trace System registers from both Execution states to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>
<para>In AArch64 state, accesses to trace System registers with op0=2, op1=1, and CRn&lt;<binarynumber>0b1000</binarynumber> are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MRC or MCR accesses to trace System registers with cpnum=14, opc1=1, and CRn&lt;<binarynumber>0b1000</binarynumber> are trapped to EL2, reported using EC syndrome value <hexnumber>0x05</hexnumber>.</para>
</content>
</listitem></list></field_description>
    <field_description order="after">
      <note>
        <para>The ETMv4 architecture and ETE do not permit EL0 to access the trace System registers. If the trace unit implements FEAT_ETMv4 or ETE, EL0 accesses to the trace System registers are <arm-defined-word>UNDEFINED</arm-defined-word>, and any resulting exception is higher priority than an exception that would be generated because the value of CPTR_EL2.TTA is 1.</para>
        <para>EL2 does not provide traps on trace register accesses through the optional Memory-mapped interface.</para>
      </note>
      <para>System register accesses to the trace System registers can have side-effects. When a System register access is trapped, any side-effects that are normally associated with the access do not occur before the exception is taken.</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 at EL0, EL1 or EL2, to execute a System register access to an implemented trace System register is trapped to EL2, when EL2 is enabled in the current Security state, unless <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 0 and it is trapped by <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link>.NSTRCDIS or <register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link>.TTA.</para>
<para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, any attempt at EL0 or EL2 to execute a System register access to an implemented trace System register 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_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.TTA == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When System register access to the trace unit registers is implemented</fields_condition>
  </field>
  <field id="fieldset_0-28_28-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>28</field_msb>
    <field_lsb>28</field_lsb>
    <rel_range>28</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-27_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" rwtype="RES0">
    <field_msb>27</field_msb>
    <field_lsb>26</field_lsb>
    <rel_range>27:26</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-25_24-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>SMEN</field_name>
    <field_msb>25</field_msb>
    <field_lsb>24</field_lsb>
    <rel_range>1:0</rel_range>
    <field_description order="before"><para>Traps execution at EL2, EL1, and EL0 of SME instructions, SVE instructions when FEAT_SVE is not implemented or the PE is in Streaming SVE mode, and instructions that directly access the <register_link state="AArch64" id="AArch64-svcr.xml">SVCR</register_link>, <register_link state="AArch64" id="AArch64-smcr_el1.xml">SMCR_EL1</register_link>, or <register_link state="AArch64" id="AArch64-smcr_el2.xml">SMCR_EL2</register_link> System registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>When instructions that directly access the <register_link state="AArch64" id="AArch64-svcr.xml">SVCR</register_link> System register are trapped with reference to this control, the <instruction>MSR SVCRSM</instruction>, <instruction>MSR SVCRZA</instruction>, and <instruction>MSR SVCRSMZA</instruction> instructions are also trapped.</para>
<para>The exception is reported using EC syndrome value <hexnumber>0x1D</hexnumber>, with an ISS code of <hexnumber>0x0000000</hexnumber>.</para>
<para>This field does not affect whether Streaming SVE or SME register values are valid.</para>
<para>A trap taken as a result of CPTR_EL2.SMEN has precedence over a trap taken as a result of CPTR_EL2.FPEN.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description><para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 0, this control does not cause execution of any instructions to be trapped.</para>
<para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, this control causes execution of these instructions at EL0 to be trapped, but does not cause execution of any instructions at EL2 to be trapped.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>This control does not cause execution of 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>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.SMEN == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_SME is implemented</fields_condition>
  </field>
  <field id="fieldset_0-25_24-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>25</field_msb>
    <field_lsb>24</field_lsb>
    <rel_range>25:24</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_0-23_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" rwtype="RES0">
    <field_msb>23</field_msb>
    <field_lsb>22</field_lsb>
    <rel_range>23:22</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-21_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>FPEN</field_name>
    <field_msb>21</field_msb>
    <field_lsb>20</field_lsb>
    <rel_range>21:20</rel_range>
    <field_description order="before"><para>Traps execution at EL2, EL1, and EL0 of instructions that access the Advanced SIMD and floating-point registers from both Execution states to EL2, when EL2 is enabled in the current Security state. The exception is reported using EC syndrome value <hexnumber>0x07</hexnumber>.</para>
<para>Traps execution at EL2, EL1, and EL0 of 
SME and 
SVE instructions
 to EL2, when EL2 is enabled in the current Security state.
The exception is reported using EC syndrome value <hexnumber>0x07</hexnumber>.</para>
<para>When <xref linkend="#FEAT_FPMR">FEAT_FPMR</xref> is implemented, traps execution at EL2, EL1, and EL0 of instructions that access <register_link state="AArch64" id="AArch64-fpmr.xml">FPMR</register_link> to EL2, when EL2 is enabled in the current Security state. The exception is reported using EC syndrome value <hexnumber>0x07</hexnumber></para>
<para>A trap taken as a result of CPTR_EL2.SMEN has precedence over a trap taken as a result of CPTR_EL2.FPEN.</para>
<para>A trap taken as a result of CPTR_EL2.ZEN has precedence over a trap taken as a result of CPTR_EL2.FPEN.</para></field_description>
    <field_description order="after"><para>Writes 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> from EL1 or higher are <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word> and whether these accesses can be trapped by this control depends on implemented <arm-defined-word>CONSTRAINED UNPREDICTABLE</arm-defined-word> behavior.</para>
<note><list type="unordered"><listitem><content>Attempts to write to the <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link> count as use of the registers for accesses from EL1 or higher.</content></listitem><listitem><content>Accesses from EL0 to <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link>, <register_link state="AArch32" id="AArch32-mvfr0.xml">MVFR0</register_link>, <register_link state="AArch32" id="AArch32-mvfr1.xml">MVFR1</register_link>, <register_link state="AArch32" id="AArch32-mvfr2.xml">MVFR2</register_link>, and <register_link state="AArch32" id="AArch32-fpexc.xml">FPEXC</register_link> are <arm-defined-word>UNDEFINED</arm-defined-word>, and any resulting exception is higher priority than an exception that would be generated because the value of CPTR_EL2.FPEN is not <binarynumber>0b11</binarynumber>.</content></listitem></list></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description><para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 0, this control does not cause execution of any instructions to be trapped.</para>
<para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, this control causes execution of these instructions at EL0 to be trapped, but does not cause execution of any instructions at EL2 to be trapped.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>This control does not cause execution of 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>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.FPEN == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_0-19_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" rwtype="RES0">
    <field_msb>19</field_msb>
    <field_lsb>18</field_lsb>
    <rel_range>19:18</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-17_16-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>ZEN</field_name>
    <field_msb>17</field_msb>
    <field_lsb>16</field_lsb>
    <rel_range>1:0</rel_range>
    <field_description order="before"><para>Traps execution at EL2, EL1, and EL0 of SVE instructions when the PE is not in Streaming SVE mode, and instructions that directly access the <register_link state="AArch64" id="AArch64-zcr_el1.xml">ZCR_EL1</register_link> or <register_link state="AArch64" id="AArch64-zcr_el2.xml">ZCR_EL2</register_link> System registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>The exception is reported using EC syndrome value <hexnumber>0x19</hexnumber>.</para>
<para>A trap taken as a result of CPTR_EL2.ZEN has precedence over a trap taken as a result of CPTR_EL2.FPEN.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description><para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 0, this control does not cause execution of any instructions to be trapped.</para>
<para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, this control causes execution of these instructions at EL0 to be trapped, but does not cause execution of any instructions at EL2 to be trapped.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b11</field_value>
        <field_value_description>
          <para>This control does not cause execution of 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>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL2 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL2)</field_access_sublevel>
          <field_access_sublevel>CPTRMASK_EL2.ZEN == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_SVE is implemented</fields_condition>
  </field>
  <field id="fieldset_0-17_16-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>17</field_msb>
    <field_lsb>16</field_lsb>
    <rel_range>17:16</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-15_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" rwtype="RES0">
    <field_msb>15</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>15:0</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <text_after_fields/>
</fields>



<fields id="fieldset_1" length="64">
  <fields_condition/>
  <fields_instance>EffectiveHCR_EL2_E2H() == '0'</fields_instance>
  <text_before_fields>
    <para>This format applies in all Armv8.0 implementations.</para>
  </text_before_fields>
  <field id="fieldset_1-63_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" rwtype="RES0">
    <field_msb>63</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>63:32</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-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">
    <field_name>TCPAC</field_name>
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>31</rel_range>
    <field_description order="before"><para>In AArch64 state, traps accesses to <register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link> from EL1 to EL2, when EL2 is enabled in the current Security state. The exception is reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
<para>In AArch32 state, traps accesses to <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link> from EL1 to EL2, when EL2 is enabled in the current Security state. The exception is reported using EC syndrome value <hexnumber>0x03</hexnumber>.</para></field_description>
    <field_description order="after"><para>When <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, this control does not cause any instructions to be trapped.</para>
<note><para><register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link> and <register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link> are not accessible 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 accesses to the following registers are trapped to EL2, when EL2 is enabled in the current Security state:</para>
<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link>.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link>.</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_1-30_30-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>TAM</field_name>
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Trap Activity Monitor access. Traps EL1 and EL0 accesses to all Activity Monitors System registers to EL2, as follows:</para>
<list type="unordered">
<listitem><content>
<para>In AArch64 state, accesses to the following registers are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>:</para>
<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-amuserenr_el0.xml">AMUSERENR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcfgr_el0.xml">AMCFGR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcgcr_el0.xml">AMCGCR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenclr0_el0.xml">AMCNTENCLR0_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenclr1_el0.xml">AMCNTENCLR1_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenset0_el0.xml">AMCNTENSET0_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcntenset1_el0.xml">AMCNTENSET1_EL0</register_link>, <register_link state="AArch64" id="AArch64-amcr_el0.xml">AMCR_EL0</register_link>, <register_link state="AArch64" id="AArch64-amevcntr0n_el0.xml">AMEVCNTR0&lt;n&gt;_EL0</register_link>, <register_link state="AArch64" id="AArch64-amevcntr1n_el0.xml">AMEVCNTR1&lt;n&gt;_EL0</register_link>, <register_link state="AArch64" id="AArch64-amevtyper0n_el0.xml">AMEVTYPER0&lt;n&gt;_EL0</register_link>, and <register_link state="AArch64" id="AArch64-amevtyper1n_el0.xml">AMEVTYPER1&lt;n&gt;_EL0</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MCR or MRC accesses to the following registers 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-amuserenr.xml">AMUSERENR</register_link>, <register_link state="AArch32" id="AArch32-amcfgr.xml">AMCFGR</register_link>, <register_link state="AArch32" id="AArch32-amcgcr.xml">AMCGCR</register_link>, <register_link state="AArch32" id="AArch32-amcntenclr0.xml">AMCNTENCLR0</register_link>, <register_link state="AArch32" id="AArch32-amcntenclr1.xml">AMCNTENCLR1</register_link>, <register_link state="AArch32" id="AArch32-amcntenset0.xml">AMCNTENSET0</register_link>, <register_link state="AArch32" id="AArch32-amcntenset1.xml">AMCNTENSET1</register_link>, <register_link state="AArch32" id="AArch32-amcr.xml">AMCR</register_link>, <register_link state="AArch32" id="AArch32-amevtyper0n.xml">AMEVTYPER0&lt;n&gt;</register_link>, and <register_link state="AArch32" id="AArch32-amevtyper1n.xml">AMEVTYPER1&lt;n&gt;</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MCRR or MRRC accesses to <register_link state="AArch32" id="AArch32-amevcntr0n.xml">AMEVCNTR0&lt;n&gt;</register_link> and <register_link state="AArch32" id="AArch32-amevcntr1n.xml">AMEVCNTR1&lt;n&gt;</register_link>, are trapped to EL2, reported using EC syndrome value <hexnumber>0x04</hexnumber>.</para>
</content>
</listitem></list></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Accesses from EL1 and EL0 to Activity Monitors System registers are not trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Accesses from EL1 and EL0 to Activity Monitors System 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_AMUv1 is implemented</fields_condition>
  </field>
  <field id="fieldset_1-30_30-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>30</field_msb>
    <field_lsb>30</field_lsb>
    <rel_range>30</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-29_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" rwtype="RES0">
    <field_msb>29</field_msb>
    <field_lsb>21</field_lsb>
    <rel_range>29:21</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-20_20-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>TTA</field_name>
    <field_msb>20</field_msb>
    <field_lsb>20</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Traps System register accesses to all implemented trace System registers from both Execution states to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>
<para>In AArch64 state, accesses to trace System registers with op0=2, op1=1, and CRn&lt;<binarynumber>0b1000</binarynumber> are trapped to EL2, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MRC or MCR accesses to trace System registers with cpnum=14, opc1=1, and CRn&lt;<binarynumber>0b1000</binarynumber> are trapped to EL2, reported using EC syndrome value <hexnumber>0x05</hexnumber>.</para>
</content>
</listitem></list></field_description>
    <field_description order="after">
      <note>
        <list type="unordered">
          <listitem>
            <content>FEAT_ETMv4 and FEAT_ETE do not permit EL0 to access the trace System registers. EL0 accesses to the trace System registers are <arm-defined-word>UNDEFINED</arm-defined-word>, and any resulting exception is higher priority than an exception that would be generated because the value of CPTR_EL2.TTA is 1.</content>
          </listitem>
          <listitem>
            <content>EL2 does not provide traps on trace register accesses through the optional memory-mapped interface.</content>
          </listitem>
        </list>
      </note>
      <para>System register accesses to the trace System registers can have side-effects. When a System register access is trapped, any side-effects that are normally associated with the access do not occur before the exception is taken.</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 at EL0, EL1, or EL2, to execute a System register access to an implemented trace System register is trapped to EL2, when EL2 is enabled in the current Security state, unless it is trapped by one of the following controls:</para>
<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-cpacr_el1.xml">CPACR_EL1</register_link>.TTA.</content>
</listitem><listitem><content><register_link state="AArch32" id="AArch32-cpacr.xml">CPACR</register_link>.TRCDIS.</content>
</listitem></list></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <fields_condition>When System register access to the trace unit registers is implemented</fields_condition>
  </field>
  <field id="fieldset_1-20_20-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>20</field_msb>
    <field_lsb>20</field_lsb>
    <rel_range>20</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-19_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" rwtype="RES0">
    <field_msb>19</field_msb>
    <field_lsb>14</field_lsb>
    <rel_range>19:14</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-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" rwtype="RES1">
    <field_msb>13</field_msb>
    <field_lsb>13</field_lsb>
    <rel_range>13</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-12_12-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="RES1">
    <field_name>TSM</field_name>
    <field_msb>12</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Traps execution at EL2, EL1, and EL0 of SME instructions, SVE instructions when FEAT_SVE is not implemented or the PE is in Streaming SVE mode, and instructions that directly access the <register_link state="AArch64" id="AArch64-svcr.xml">SVCR</register_link>, <register_link state="AArch64" id="AArch64-smcr_el1.xml">SMCR_EL1</register_link>, or <register_link state="AArch64" id="AArch64-smcr_el2.xml">SMCR_EL2</register_link> System registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>When instructions that directly access the <register_link state="AArch64" id="AArch64-svcr.xml">SVCR</register_link> System register are trapped with reference to this control, the <instruction>MSR SVCRSM</instruction>, <instruction>MSR SVCRZA</instruction>, and <instruction>MSR SVCRSMZA</instruction> instructions are also trapped.</para>
<para>The exception is reported using EC syndrome value <hexnumber>0x1D</hexnumber>, with an ISS code of <hexnumber>0x0000000</hexnumber>.</para>
<para>This field does not affect whether Streaming SVE or SME register values are valid.</para>
<para>A trap taken as a result of CPTR_EL2.TSM has precedence over a trap taken as a result of CPTR_EL2.TFP.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause execution of any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 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_SME is implemented</fields_condition>
  </field>
  <field id="fieldset_1-12_12-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="RES1">
    <field_msb>12</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>12</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-11_11" 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>11</field_msb>
    <field_lsb>11</field_lsb>
    <rel_range>11</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-10_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>TFP</field_name>
    <field_msb>10</field_msb>
    <field_lsb>10</field_lsb>
    <rel_range>10</rel_range>
    <field_description order="before"><para>Traps execution of instructions which access the Advanced SIMD and floating-point functionality, from both Execution states to EL2, when EL2 is enabled in the current Security state, as follows:</para>
<list type="unordered">
<listitem><content>In AArch64 state, accesses to the following registers are trapped to EL2, reported using EC syndrome value <hexnumber>0x07</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch64" id="AArch64-fpcr.xml">FPCR</register_link>, <register_link state="AArch64" id="AArch64-fpsr.xml">FPSR</register_link>, <register_link state="AArch64" id="AArch64-fpexc32_el2.xml">FPEXC32_EL2</register_link>, and any of the SIMD and floating-point registers V0-V31, including their views as D0-D31 registers or S0-31 registers.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_FPMR">FEAT_FPMR</xref> is implemented, <register_link state="AArch64" id="AArch64-fpmr.xml">FPMR</register_link>.</content>
</listitem></list>
</content>
</listitem><listitem><content>In AArch32 state, accesses to the following registers are trapped to EL2, reported using EC syndrome value <hexnumber>0x07</hexnumber>:<list type="unordered">
<listitem><content><register_link state="AArch32" id="AArch32-mvfr0.xml">MVFR0</register_link>, <register_link state="AArch32" id="AArch32-mvfr1.xml">MVFR1</register_link>, <register_link state="AArch32" id="AArch32-mvfr2.xml">MVFR2</register_link>, <register_link state="AArch32" id="AArch32-fpscr.xml">FPSCR</register_link>, <register_link state="AArch32" id="AArch32-fpexc.xml">FPEXC</register_link>, and any of the SIMD and floating-point registers Q0-15, including their views as D0-D31 registers or S0-31 registers.
For the purposes of this trap, the architecture defines a VMSR access to <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link> from EL1 or higher as an access to a SIMD and floating-point register. Otherwise, permitted VMSR accesses to <register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link> are ignored.</content>
</listitem></list>
</content>
</listitem></list>
<para>Traps execution at the same Exception levels of 
SME and 
SVE instructions
 to EL2, when EL2 is enabled in the current Security state.
The exception is reported using EC syndrome value <hexnumber>0x07</hexnumber>.</para>
<para>A trap taken as a result of CPTR_EL2.TSM has precedence over a trap taken as a result of CPTR_EL2.TFP.</para>
<para>A trap taken as a result of CPTR_EL2.TZ has precedence over a trap taken as a result of CPTR_EL2.TFP.</para></field_description>
    <field_description order="after">
      <note>
        <para><register_link state="AArch64" id="AArch64-fpexc32_el2.xml">FPEXC32_EL2</register_link> is not accessible from EL0 using AArch64.</para>
        <para><register_link state="AArch32" id="AArch32-fpsid.xml">FPSID</register_link>, <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-fpexc.xml">FPEXC</register_link> are not accessible from EL0 using AArch32.</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 execution of any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 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>
  </field>
  <field id="fieldset_1-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" rwtype="RES1">
    <field_msb>9</field_msb>
    <field_lsb>9</field_lsb>
    <rel_range>9</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
  </field>
  <field id="fieldset_1-8_8-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="RES1">
    <field_name>TZ</field_name>
    <field_msb>8</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before"><para>Traps execution at EL2, EL1, and EL0 of SVE instructions when the PE is not in Streaming SVE mode, and instructions that directly access the <register_link state="AArch64" id="AArch64-zcr_el2.xml">ZCR_EL2</register_link> or <register_link state="AArch64" id="AArch64-zcr_el1.xml">ZCR_EL1</register_link> System registers to EL2, when EL2 is enabled in the current Security state.</para>
<para>The exception is reported using EC syndrome value <hexnumber>0x19</hexnumber>.</para>
<para>A trap taken as a result of CPTR_EL2.TZ has precedence over a trap taken as a result of CPTR_EL2.TFP.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>This control does not cause execution of any instructions to be trapped.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>This control causes execution of these instructions at EL2, EL1, and EL0 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_SVE is implemented</fields_condition>
  </field>
  <field id="fieldset_1-8_8-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="RES1">
    <field_msb>8</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>8</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
    <fields_condition>Otherwise</fields_condition>
  </field>
  <field id="fieldset_1-7_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" rwtype="RES1">
    <field_msb>7</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>7:0</rel_range>
    <field_description order="before"/>
    <field_description order="before">
      <para>Reserved, <arm-defined-word>RES1</arm-defined-word>.</para>
    </field_description>
  </field>
  <text_after_fields/>
</fields>





<reg_fieldset length="64">
  <fields_condition>When EffectiveHCR_EL2_E2H() == '1'</fields_condition>
  <fieldat id="fieldset_0-63_32" msb="63" lsb="32"/>
  <fieldat id="fieldset_0-31_31" msb="31" lsb="31"/>
  <fieldat id="fieldset_0-30_30-1" msb="30" lsb="30"/>
  <fieldat id="fieldset_0-29_29-1" msb="29" lsb="29"/>
  <fieldat id="fieldset_0-28_28-1" msb="28" lsb="28"/>
  <fieldat id="fieldset_0-27_26" msb="27" lsb="26"/>
  <fieldat id="fieldset_0-25_24-1" msb="25" lsb="24"/>
  <fieldat id="fieldset_0-23_22" msb="23" lsb="22"/>
  <fieldat id="fieldset_0-21_20" msb="21" lsb="20"/>
  <fieldat id="fieldset_0-19_18" msb="19" lsb="18"/>
  <fieldat id="fieldset_0-17_16-1" msb="17" lsb="16"/>
  <fieldat id="fieldset_0-15_0" msb="15" lsb="0"/>
</reg_fieldset>

<reg_fieldset length="64">
  <fields_condition/>
  <fieldat id="fieldset_1-63_32" msb="63" lsb="32"/>
  <fieldat id="fieldset_1-31_31" msb="31" lsb="31"/>
  <fieldat id="fieldset_1-30_30-1" msb="30" lsb="30"/>
  <fieldat id="fieldset_1-29_21" msb="29" lsb="21"/>
  <fieldat id="fieldset_1-20_20-1" msb="20" lsb="20"/>
  <fieldat id="fieldset_1-19_14" msb="19" lsb="14"/>
  <fieldat id="fieldset_1-13_13" msb="13" lsb="13"/>
  <fieldat id="fieldset_1-12_12-1" msb="12" lsb="12"/>
  <fieldat id="fieldset_1-11_11" msb="11" lsb="11"/>
  <fieldat id="fieldset_1-10_10" msb="10" lsb="10"/>
  <fieldat id="fieldset_1-9_9" msb="9" lsb="9"/>
  <fieldat id="fieldset_1-8_8-1" msb="8" lsb="8"/>
  <fieldat id="fieldset_1-7_0" msb="7" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>

      <access_mechanisms>
          


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

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





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

      </access_mechanisms>

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