<?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>TRBIDR_EL1</reg_short_name>
        
        <reg_long_name>Trace Buffer ID Register</reg_long_name>



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




          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        



    
      
      <reg_mapping>
        
  

    

  

    <mapped_name filename="ext-trbidr_el1.xml">TRBIDR_EL1</mapped_name>
  <mapped_type>Architectural</mapped_type>
      <mapped_execution_state>External</mapped_execution_state>
    <mapped_from_startbit>63</mapped_from_startbit>
    <mapped_from_endbit>0</mapped_from_endbit>
    <mapped_to_startbit>63</mapped_to_startbit>
    <mapped_to_endbit>0</mapped_to_endbit>
    <mapped_from_rangeset output="63:0">
      <range>
        <msb>63</msb>
        <lsb>0</lsb>
      </range>
    </mapped_from_rangeset>
    <mapped_to_rangeset output="63:0">
      <range>
        <msb>63</msb>
        <lsb>0</lsb>
      </range>
    </mapped_to_rangeset>

        <mapped_to_condition>when FEAT_TRBE_EXT is implemented</mapped_to_condition>
      </reg_mapping>

      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>Describes constraints on using the Trace Buffer Unit to software, including whether the Trace Buffer Unit can be programmed at the current Exception level.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
            <reg_group>Identification Registers</reg_group>
      </reg_groups>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>TRBIDR_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_48" has_partial_fieldset="False" is_linked_to_partial_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>48</field_lsb>
    <rel_range>63:48</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-47_32" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="True" is_partial_field="False" is_conditional_field_name="False">
    <field_name>MaxBuffSize</field_name>
    <field_msb>47</field_msb>
    <field_lsb>32</field_lsb>
    <rel_range>47:32</rel_range>
    <field_description order="before">
      <para>Maximum supported trace buffer size. Reserved for software use.</para>
    </field_description>
    <field_description order="after"><para>The only permitted value is <hexnumber>0x0000</hexnumber>, indicating there is no limit to the maximum buffer size.</para>
<note><para>Permitted values relate to the values an implementation is permitted to set this field to. A hypervisor might trap accesses to this register and use other values to describe limitations of its virtualization support to a guest operating system, as follows:</para><list type="unordered"><listitem><content>MaxBuffSize bits[8:0] encodes a mantissa value, <value>M</value>.</content></listitem><listitem><content>MaxBuffSize bits[13:9] encodes an exponent value, <value>E</value>.</content></listitem><listitem><content>MaxBuffSize bits[15:14] are reserved.</content></listitem></list><para>The maximum buffer size, in bytes, is expressed using the following function:</para><para><value> if IsZero(E), then UInt(M:Zeros(12)) else UInt('1':M:Zeros(UInt(E)+11)) </value></para><para>For example:</para><list type="unordered"><listitem><content>A value of <hexnumber>0x0001</hexnumber> means a maximum buffer size of 4KB.</content></listitem><listitem><content>A value of <hexnumber>0x3FFF</hexnumber> means a maximum buffer size of 4092TB.</content></listitem></list></note><para>Reads as <hexnumber>0x0000</hexnumber>.</para></field_description>
    <field_access>
      <field_access_state>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_0-31_16" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False" rwtype="RES0">
    <field_msb>31</field_msb>
    <field_lsb>16</field_lsb>
    <rel_range>31:16</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-15_12-1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="True" is_partial_field="False" is_conditional_field_name="False" reserved_type="RES0">
    <field_name>MPAM</field_name>
    <field_msb>15</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para><xref linkend="#FEAT_MPAMv0p1">FEAT_MPAMv0p1</xref> or <xref linkend="#FEAT_MPAMv1p0">FEAT_MPAMv1p0</xref> extensions. Indicates Memory Partitioning and Monitoring (MPAM) support in the Trace Buffer Unit when using External mode.</para>
    </field_description>
    <field_description order="after"><para>When <xref linkend="#FEAT_MPAMv0p1">FEAT_MPAMv0p1</xref> and <xref linkend="#FEAT_MPAMv1p0">FEAT_MPAMv1p0</xref> are not implemented by the PE, the only permitted value is <binarynumber>0b0000</binarynumber>.</para>
<para>When either <xref linkend="#FEAT_MPAMv0p1">FEAT_MPAMv0p1</xref> or <xref linkend="#FEAT_MPAMv1p0">FEAT_MPAMv1p0</xref> is implemented by the PE, the value <binarynumber>0b0000</binarynumber> is not permitted.</para>
<para><xref linkend="#FEAT_TRBE_MPAM">FEAT_TRBE_MPAM</xref> implements the functionality identified by the value <binarynumber>0b0010</binarynumber>.</para></field_description>
    <field_values impdef="True">
      <field_value_instance>
        <field_value>0b0000</field_value>
        <field_value_description>
          <para><xref linkend="#FEAT_MPAMv0p1">FEAT_MPAMv0p1</xref> and <xref linkend="#FEAT_MPAMv1p0">FEAT_MPAMv1p0</xref> are not implemented by the PE.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0001</field_value>
        <field_value_description>
          <para><xref linkend="#FEAT_MPAMv0p1">FEAT_MPAMv0p1</xref> or <xref linkend="#FEAT_MPAMv1p0">FEAT_MPAMv1p0</xref> is implemented by the Trace Buffer Unit, using Default physical PARTID and PMG values in External mode.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0010</field_value>
        <field_value_description>
          <para>Trace Buffer MPAM extensions implemented, using <xref linkend="#FEAT_MPAMv0p1">FEAT_MPAMv0p1</xref> or <xref linkend="#FEAT_MPAMv1p0">FEAT_MPAMv1p0</xref>.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_access>
      <field_access_state>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
    <fields_condition>When FEAT_TRBE_EXT is implemented</fields_condition>
  </field>
  <field id="fieldset_0-15_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="RES0">
    <field_msb>15</field_msb>
    <field_lsb>12</field_lsb>
    <rel_range>15:12</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-11_8" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="True" is_partial_field="False" is_conditional_field_name="False">
    <field_name>EA</field_name>
    <field_msb>11</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>11:8</rel_range>
    <field_description order="before">
      <para>External Abort handling. Describes how the PE manages External aborts on writes made by the Trace Buffer Unit to the trace buffer.</para>
    </field_description>
    <field_description order="after"><para>All other values are reserved.</para>
<para>From Armv9.3, the value <binarynumber>0b0000</binarynumber> is not permitted.</para>
<para>The behavior described by this field does not apply for External aborts on a translation table walk, translation table update, or GPT walk made by the Trace Buffer Unit that are reported as MMU faults using <xref linkend="#TRBSR_ELx">TRBSR_ELx</xref>. For more information, see <xref linkend="#MDSec.trbe_external_aborts">'External aborts'</xref>.</para></field_description>
    <field_values impdef="True">
      <field_value_instance>
        <field_value>0b0000</field_value>
        <field_value_description>
          <para>Not described.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0001</field_value>
        <field_value_description>
          <para>The PE ignores External aborts on writes made by the Trace Buffer Unit.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0010</field_value>
        <field_value_description>
          <para>An External abort on a write made by the Trace Buffer Unit generates an asynchronous SError exception at the PE.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_access>
      <field_access_state>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_0-7_6" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>AddrMode</field_name>
    <field_msb>7</field_msb>
    <field_lsb>6</field_lsb>
    <rel_range>7:6</rel_range>
    <field_description order="before">
      <para>Address Modes. Describes the addressing modes available for the trace buffer.</para>
    </field_description>
    <field_description order="after"><para>Other values are reserved.</para>
<para>If the Effective value of <register_link state="AArch64" id="AArch64-trfcr_el2.xml">TRFCR_EL2</register_link>.DnVM is 1 and the value returned for TRBIDR_EL1.P is 0, then this field reads as <binarynumber>0b01</binarynumber>. Otherwise, this field reads as <binarynumber>0b00</binarynumber>.</para>
<note><para>A hypervisor might trap accesses to this register to describe limitations of its virtualization support to a guest operating system.</para></note></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b00</field_value>
        <field_value_description>
          <para>Virtual and physical address modes are supported.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b01</field_value>
        <field_value_description>
          <para>Only virtual address mode is supported.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b10</field_value>
        <field_value_description>
          <para>Reserved for software use under virtualization, to show that only physical address mode is supported.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
  </field>
  <field id="fieldset_0-5_5" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="True" is_partial_field="False" is_conditional_field_name="False">
    <field_name>F</field_name>
    <field_msb>5</field_msb>
    <field_lsb>5</field_lsb>
    <rel_range>5</rel_range>
    <field_description order="before">
      <para>Flag updates. Describes how address translations performed by the Trace Buffer Unit manage the Access flag and dirty state.</para>
    </field_description>
    <field_description order="after">
      <note>
        <para>If hardware management of the Access flag is disabled for a stage of translation, an access to a Page or Block with the Access flag bit not set in the descriptor will generate an Access Flag fault.</para>
        <para>If hardware management of the dirty state is disabled for a stage of translation, an access to a Page or Block will ignore the Dirty Bit Modifier in the descriptor and might generate a Permission fault, depending on the values of the access permission bits in the descriptor.</para>
      </note>
      <para>From Armv9.3, the value 0 is not permitted.</para>
    </field_description>
    <field_values impdef="True">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Hardware management of the Access flag and dirty state for accesses made by the Trace Buffer Unit is always disabled for all translation stages.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Hardware management of the Access flag and dirty state for accesses made by the Trace Buffer Unit is controlled in the same way as explicit memory accesses in the trace buffer owning translation regime.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_access>
      <field_access_state>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <field id="fieldset_0-4_4" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>P</field_name>
    <field_msb>4</field_msb>
    <field_lsb>4</field_lsb>
    <rel_range>4</rel_range>
    <field_description order="before">
      <para>Programming not allowed. When read at EL3, this field reads as zero. Otherwise, indicates that the trace buffer owning Exception level is a higher Exception level or the trace buffer owning Security state is not the current Security state.</para>
    </field_description>
    <field_description order="after"><para>The value read from this field depends on the current Exception level and the Effective values of 
<register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.NSTB, <register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.NSTBE, and <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.E2TB:</para>
<list type="unordered">
<listitem><content>If EL3 is implemented, <register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.NSTB is <binarynumber>0b0x</binarynumber>, and either <xref linkend="#FEAT_RME">FEAT_RME</xref> is not implemented, or Secure state is implemented and <register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.NSTBE is 0, then this field reads as one from:<list type="unordered">
<listitem><content>Non-secure EL1 and Non-secure EL2.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_RME">FEAT_RME</xref> is implemented, Realm EL1 and Realm EL2.</content>
</listitem><listitem><content>If Secure EL2 is implemented and enabled, and <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.E2TB is <binarynumber>0b00</binarynumber>, Secure EL1.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL3 is implemented, <register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.NSTB is <binarynumber>0b1x</binarynumber> and either <xref linkend="#FEAT_RME">FEAT_RME</xref> is not implemented or <register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.NSTBE is 0, then this field reads as one from:<list type="unordered">
<listitem><content>If Secure state is implemented, Secure EL1.</content>
</listitem><listitem><content>If Secure EL2 is implemented, Secure EL2.</content>
</listitem><listitem><content>If EL2 is implemented and <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.E2TB is <binarynumber>0b00</binarynumber>, Non-secure EL1.</content>
</listitem><listitem><content>If <xref linkend="#FEAT_RME">FEAT_RME</xref> is implemented, Realm EL1 and Realm EL2.</content>
</listitem></list>
</content>
</listitem><listitem><content>If <xref linkend="#FEAT_RME">FEAT_RME</xref> is implemented, and <register_link state="AArch64" id="AArch64-mdcr_el3.xml">MDCR_EL3</register_link>.{NSTB, NSTBE} is {<binarynumber>0b1x</binarynumber>, 1}, then this field reads as one from:<list type="unordered">
<listitem><content>Non-secure EL1 and Non-secure EL2.</content>
</listitem><listitem><content>If Secure state is implemented, Secure EL1 and Secure EL2.</content>
</listitem><listitem><content>If <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.E2TB is <binarynumber>0b00</binarynumber>, Realm EL1.</content>
</listitem></list>
</content>
</listitem><listitem><content>If EL3 is not implemented, EL2 is implemented, and <register_link state="AArch64" id="AArch64-mdcr_el2.xml">MDCR_EL2</register_link>.E2TB is <binarynumber>0b00</binarynumber>, then this field reads as one from EL1.</content>
</listitem></list>
<para>Otherwise, this field reads as zero.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>Programming is allowed.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>Programming not allowed.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
  </field>
  <field id="fieldset_0-3_0" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="True" is_partial_field="False" is_conditional_field_name="False">
    <field_name>Align</field_name>
    <field_msb>3</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>3:0</rel_range>
    <field_description order="before">
      <para>Defines the minimum alignment constraint for writes to <register_link state="AArch64" id="AArch64-trbptr_el1.xml">TRBPTR_EL1</register_link> and <register_link state="AArch64" id="AArch64-trbtrg_el1.xml">TRBTRG_EL1</register_link>.</para>
    </field_description>
    <field_description order="after">
      <para>All other values are reserved.</para>
    </field_description>
    <field_values impdef="True">
      <field_value_instance>
        <field_value>0b0000</field_value>
        <field_value_description>
          <para>Byte.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0001</field_value>
        <field_value_description>
          <para>Halfword.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0010</field_value>
        <field_value_description>
          <para>Word.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0011</field_value>
        <field_value_description>
          <para>Doubleword.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0100</field_value>
        <field_value_description>
          <para>16 bytes.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0101</field_value>
        <field_value_description>
          <para>32 bytes.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0110</field_value>
        <field_value_description>
          <para>64 bytes.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b0111</field_value>
        <field_value_description>
          <para>128 bytes.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1000</field_value>
        <field_value_description>
          <para>256 bytes.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1001</field_value>
        <field_value_description>
          <para>512 bytes.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1010</field_value>
        <field_value_description>
          <para>1KB.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1011</field_value>
        <field_value_description>
          <para>2KB.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_access>
      <field_access_state>
        <field_access_type>RO</field_access_type>
      </field_access_state>
    </field_access>
  </field>
  <text_after_fields/>
</fields>




<reg_fieldset length="64">
  <fieldat id="fieldset_0-63_48" msb="63" lsb="48"/>
  <fieldat id="fieldset_0-47_32" msb="47" lsb="32"/>
  <fieldat id="fieldset_0-31_16" msb="31" lsb="16"/>
  <fieldat id="fieldset_0-15_12-1" msb="15" lsb="12"/>
  <fieldat id="fieldset_0-11_8" msb="11" lsb="8"/>
  <fieldat id="fieldset_0-7_6" msb="7" lsb="6"/>
  <fieldat id="fieldset_0-5_5" msb="5" lsb="5"/>
  <fieldat id="fieldset_0-4_4" msb="4" lsb="4"/>
  <fieldat id="fieldset_0-3_0" msb="3" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>

      <access_mechanisms>
          






    
        
        <access_mechanism accessor="MRS TRBIDR_EL1" type="SystemAccessor">
            <encoding>
            <access_instruction>MRS &lt;Xt&gt;, TRBIDR_EL1</access_instruction>
                
                <enc n="op0" v="0b11"/>
                
                <enc n="op1" v="0b000"/>
                
                <enc n="CRn" v="0b1001"/>
                
                <enc n="CRm" v="0b1011"/>
                
                <enc n="op2" v="0b111"/>
            </encoding>
            <access_permission>
                <ps name="MRS" sections="1" secttype="access_permission">
                <pstext>
if !IsFeatureImplemented(FEAT_TRBE) then
    Undefined();
elsif PSTATE.EL == EL0 then
    Undefined();
elsif PSTATE.EL == EL1 then
    if EL2Enabled() &amp;&amp; IsFeatureImplemented(FEAT_FGT) &amp;&amp; (!HaveEL(EL3) || SCR_EL3().FGTEn == '1') &amp;&amp; HDFGRTR_EL2().TRBIDR_EL1 == '1' then
        AArch64_SystemAccessTrap(EL2, 0x18);
    elsif IsFeatureImplemented(FEAT_TRBE_EXT) &amp;&amp; OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR2().TTA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        X{64}(t) = TRBIDR_EL1();
    end;
elsif PSTATE.EL == EL2 then
    if IsFeatureImplemented(FEAT_TRBE_EXT) &amp;&amp; OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR2().TTA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        X{64}(t) = TRBIDR_EL1();
    end;
elsif PSTATE.EL == EL3 then
    if IsFeatureImplemented(FEAT_TRBE_EXT) &amp;&amp; OSLSR_EL1().OSLK == '0' &amp;&amp; HaltingAllowed() &amp;&amp; EDSCR2().TTA == '1' then
        Halt(DebugHalt_SoftwareAccess);
    else
        X{64}(t) = TRBIDR_EL1();
    end;
end;
                </pstext>
                </ps>
            </access_permission>
        </access_mechanism>

      </access_mechanisms>

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