<?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>CPACR_EL1</reg_short_name>
        
        <reg_long_name>Architectural Feature Access Control Register</reg_long_name>



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




          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        



    
      
      <reg_mapping>
        
  

    

  

    <mapped_name filename="AArch32-cpacr.xml">CPACR</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 access to trace, 
SME, Streaming SVE, 
SVE, 
and Advanced SIMD and floating-point functionality.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
          <reg_group>Other</reg_group>
      </reg_groups>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>CPACR_EL1 is a 64-bit register.</para>
      </attributes_text>

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="64">
  <text_before_fields/>
  <field id="fieldset_0-63_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-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>TCPAC</field_name>
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Reserved for software use in nested virtualization.</para>
    </field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.TCPAC == '1'</field_access_sublevel>
        </field_access_level>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_NV2p1 is implemented</fields_condition>
  </field>
  <field id="fieldset_0-31_31-2" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="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>
    <fields_condition>Otherwise</fields_condition>
  </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>Reserved for software use in nested virtualization.</para>
    </field_description>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
    <field_access>
      <field_access_state>
        <field_access_level operand="AND">
          <field_access_sublevel>FEAT_SRMASK is implemented</field_access_sublevel>
          <field_access_sublevel>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.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 and FEAT_NV2p1 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>, from AArch64 state only to EL1, or to EL2 when it is implemented and enabled in the current Security state and <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1. The exception is reported using EC syndrome value <hexnumber>0x18</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>.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.</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>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.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 EL0 and EL1 System register accesses to all implemented trace System registers from both Execution states to EL1, or to EL2 when it is implemented and enabled in the current Security state and <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, as follows:</para>
<list type="unordered">
<listitem><content>
<para>In AArch64 state, accesses to trace System registers are trapped, reported using EC syndrome value <hexnumber>0x18</hexnumber>.</para>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MRC and MCR accesses to trace System registers are trapped, reported using EC syndrome value <hexnumber>0x05</hexnumber>.</para>
</content>
</listitem><listitem><content>
<para>In AArch32 state, MRRC and MCRR accesses to trace System registers are trapped, reported using EC syndrome value <hexnumber>0x0C</hexnumber>.</para>
</content>
</listitem></list></field_description>
    <field_description order="after"><note><list type="unordered"><listitem><content>The ETMv4 architecture and ETE do not permit EL0 to access the trace System registers. If the trace unit implements FEAT_ETMv4 or FEAT_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 CPACR_EL1.TTA is 1.</content></listitem><listitem><content>The Arm architecture 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>
<para>When the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.</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>This control causes EL0 and EL1 System register accesses to all implemented trace System registers 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>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.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 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> or <register_link state="AArch64" id="AArch64-smcr_el1.xml">SMCR_EL1</register_link> System registers to EL1, or to EL2 when EL2 is implemented and enabled in the current Security state and <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1. </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 CPACR_EL1.SMEN has precedence over a trap taken as a result of CPACR_EL1.FPEN.</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>.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.</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 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>This control causes execution of these instructions at EL0 to be trapped, but does not cause execution of any instructions at EL1 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 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>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.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 EL1 and EL0 of instructions that access the Advanced SIMD and floating-point registers from both Execution states to EL1, reported using EC syndrome value <hexnumber>0x07</hexnumber>, or to EL2 reported using EC syndrome value <hexnumber>0x00</hexnumber> when EL2 is implemented and enabled in the current Security state and <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1, as follows:</para>
<list type="unordered">
<listitem><content>In AArch64 state, accesses to
 <register_link state="AArch64" id="AArch64-fpmr.xml">FPMR</register_link>,
 <register_link state="AArch64" id="AArch64-fpcr.xml">FPCR</register_link>, <register_link state="AArch64" id="AArch64-fpsr.xml">FPSR</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>In AArch32 state, <register_link state="AArch32" id="AArch32-fpscr.xml">FPSCR</register_link>, and any of the SIMD and floating-point registers Q0-15, including their views as D0-D31 registers or S0-31 registers.</content>
</listitem></list>
<para>Traps execution at EL1 and EL0 of 
SME and 
SVE instructions
 to EL1, or to EL2 when EL2 is implemented and enabled for the current Security state and <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1.
The exception is reported using EC syndrome value <hexnumber>0x07</hexnumber>.</para>
<para>A trap taken as a result of CPACR_EL1.SMEN has precedence over a trap taken as a result of CPACR_EL1.FPEN.</para>
<para>A trap taken as a result of CPACR_EL1.ZEN has precedence over a trap taken as a result of CPACR_EL1.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 CPACR_EL1.FPEN is not <binarynumber>0b11</binarynumber>.</content></listitem></list></note><para>When the Effective value of <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.</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 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>This control causes execution of these instructions at EL0 to be trapped, but does not cause execution of any instructions at EL1 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 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>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.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 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> System register to EL1, or to EL2 when EL2 is implemented and enabled in the current Security state and <register_link state="AArch64" id="AArch64-hcr_el2.xml">HCR_EL2</register_link>.TGE is 1.</para>
<para>The exception is reported using EC syndrome value <hexnumber>0x19</hexnumber>.</para>
<para>A trap taken as a result of CPACR_EL1.ZEN has precedence over a trap taken as a result of CPACR_EL1.FPEN.</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>.{E2H, TGE} is {1, 1}, this field has no effect on execution at EL0.</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 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>This control causes execution of these instructions at EL0 to be trapped, but does not cause execution of any instructions at EL1 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 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>EL1 is the current Exception level</field_access_sublevel>
          <field_access_sublevel>IsSystemRegisterMaskingEnabled(EL1)</field_access_sublevel>
          <field_access_sublevel>CPACRMASK_EL1.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>




<reg_fieldset length="64">
  <fieldat id="fieldset_0-63_32" msb="63" lsb="32"/>
  <fieldat id="fieldset_0-31_31-1" 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_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 EL3 using the accessor name <value>CPACR_EL1</value> or <value>CPACR_EL12</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 CPACR_EL1 are masked by <register_link state="AArch64" id="AArch64-cpacrmask_el1.xml">CPACRMASK_EL1</register_link>.</para>
      </access_permission_text>





    
        
        <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_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_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_mechanism accessor="MRS CPACR_EL12" type="SystemAccessor">
            <encoding>
            <access_instruction>MRS &lt;Xt&gt;, CPACR_EL12</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b101"/>
                
                <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 EffectiveHCR_EL2_NVx() == '101' then
        X{64}(t) = NVMem(0x100);
    elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then
        AArch64_SystemAccessTrap(EL2, 0x18);
    else
        Undefined();
    end;
elsif PSTATE.EL == EL2 then
    if ELIsInHost(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) = CPACR_EL1();
        end;
    else
        Undefined();
    end;
elsif PSTATE.EL == EL3 then
    if ELIsInHost(EL2) then
        X{64}(t) = CPACR_EL1();
    else
        Undefined();
    end;
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MSRregister CPACR_EL12" type="SystemAccessor">
            <encoding>
            <access_instruction>MSR CPACR_EL12, &lt;Xt&gt;</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b101"/>
                
                <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 EffectiveHCR_EL2_NVx() == '101' then
        NVMem(0x100) = X{64}(t);
    elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then
        AArch64_SystemAccessTrap(EL2, 0x18);
    else
        Undefined();
    end;
elsif PSTATE.EL == EL2 then
    if ELIsInHost(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
            CPACR_EL1() = X{64}(t);
        end;
    else
        Undefined();
    end;
elsif PSTATE.EL == EL3 then
    if ELIsInHost(EL2) then
        CPACR_EL1() = X{64}(t);
    else
        Undefined();
    end;
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>
    
        
        <access_mechanism accessor="MRS CPACRALIAS_EL1" type="SystemAccessor">
            <encoding>
            <access_instruction>MRS &lt;Xt&gt;, CPACRALIAS_EL1</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b000"/>
                
                <enc n="CRn" v="0b0001"/>
                
                <enc n="CRm" v="0b0100"/>
                
                <enc n="op2" v="0b100"/>
            </encoding>
            <access_condition>
When FEAT_SRMASK 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_FGT2) &amp;&amp; ((HaveEL(EL3) &amp;&amp; SCR_EL3().FGTEn2 == '0') || HFGRTR2_EL2().nCPACRALIAS_EL1 == '0') 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 CPACRALIAS_EL1" type="SystemAccessor">
            <encoding>
            <access_instruction>MSR CPACRALIAS_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="0b0100"/>
                
                <enc n="op2" v="0b100"/>
            </encoding>
            <access_condition>
When FEAT_SRMASK 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_FGT2) &amp;&amp; ((HaveEL(EL3) &amp;&amp; SCR_EL3().FGTEn2 == '0') || HFGWTR2_EL2().nCPACRALIAS_EL1 == '0') 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>