<?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 is_register="True" is_internal="False" is_stub_entry="False">
      <reg_short_name>GITS_CTLR</reg_short_name>
        
        <reg_long_name>ITS Control Register</reg_long_name>



      
      

    
  <reg_address
      external_access="False"
    mem_map_access="True"
      power_domain="None"
  >
    <reg_component>GIC ITS control</reg_component>
    <reg_offset><hexnumber>0x0000</hexnumber></reg_offset>
    <reg_instance>GITS_CTLR</reg_instance>
    <reg_access>
      
        
      <reg_access_state>
          <reg_access_type>RW</reg_access_type>
      </reg_access_state>
    </reg_access>
</reg_address>



          <reg_reset_value></reg_reset_value>

      <reg_mappings>
        




      </reg_mappings>

        <reg_purpose>
          
    
      <purpose_text>
        <para>Controls the operation of an ITS.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
            <reg_group>GITS</reg_group>
      </reg_groups>
      <reg_configuration>
        
    
      <configuration_text>
        <para>The ITS_Number (bits [7:4]) and bit [1] fields apply only in FEAT_GICv4 implementations, and are <arm-defined-word>RES0</arm-defined-word> in FEAT_GICv3 implementations.</para>
      </configuration_text>

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

      </reg_attributes>
      <reg_fieldsets>
        






<fields id="fieldset_0" length="32">
  <text_before_fields/>
  <field id="fieldset_0-31_31" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>Quiescent</field_name>
    <field_msb>31</field_msb>
    <field_lsb>31</field_lsb>
    <rel_range>31</rel_range>
    <field_description order="before">
      <para>Read-only. Indicates completion of all ITS operations when GITS_CTLR.Enabled == 0.</para>
    </field_description>
    <field_description order="after"><para>For the ITS to be considered inactive, there must be no transactions in progress. In addition, all operations required to ensure that mapping data is consistent with external memory must be complete.</para>
<note><para>In distributed GIC implementations, this bit is set to 1 only after the ITS forwards any operations that have not yet been completed to the Redistributors and receives confirmation that all such operations have reached the appropriate Redistributor.</para></note><para>In FEAT_GICv3, FEAT_GICv3p1, and FEAT_GICv4, when GITS_CTLR.Enabled == 1, the value of GITS_CTLR.Quiescent is <arm-defined-word>UNKNOWN</arm-defined-word>.</para>
<para>In FEAT_GICv4p1, when GITS_CTLR.Enabled == 1, the value of GITS_CTLR.Quiescent reads as 1 until the write to Enabled has taken effect and then reads as 0.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The ITS is not quiescent and cannot be powered down.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The ITS is quiescent and can be powered down.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="GIC">
        <field_reset_number>'1'</field_reset_number>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-30_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="RES0">
    <field_msb>30</field_msb>
    <field_lsb>9</field_lsb>
    <rel_range>30:9</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-8_8" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>UMSIirq</field_name>
    <field_msb>8</field_msb>
    <field_lsb>8</field_lsb>
    <rel_range>8</rel_range>
    <field_description order="before">
      <para>Unmapped MSI reporting interrupt enable.</para>
    </field_description>
    <field_description order="after">
      <para>If <register_link state="ext" id="ext-gits_typer.xml">GITS_TYPER</register_link>.UMSIirq is 0, this field is <arm-defined-word>RES0</arm-defined-word>.</para>
    </field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The ITS does not assert an interrupt signal when <register_link state="ext" id="ext-gits_statusr.xml">GITS_STATUSR</register_link>.UMSI is 1.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The ITS asserts an interrupt signal when <register_link state="ext" id="ext-gits_statusr.xml">GITS_STATUSR</register_link>.UMSI is 1.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="Warm">
        <field_reset_number>'0'</field_reset_number>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-7_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>ITS_Number</field_name>
    <field_msb>7</field_msb>
    <field_lsb>4</field_lsb>
    <rel_range>7:4</rel_range>
    <field_description order="before"><para>In FEAT_GICv3 implementations this field is <arm-defined-word>RES0</arm-defined-word>.</para>
<para>In FEAT_GICv4 implementations with more than one ITS instance, this field indicates the ITS number for use with <xref filename="AS_message_based_and_locality_specific_peripheral_interrupts.fm" linkend="BABDJGAG">'VMOVP GICv4.0' in ARM® Generic Interrupt Controller Architecture Specification, GIC architecture version 3.0 and version 4.0 (ARM IHI 0069)</xref>.</para>
<para>When <register_link state="ext" id="ext-gits_typer.xml">GITS_TYPER</register_link>.VMOVP is 1, this field may be implemented as <arm-defined-word>RES0</arm-defined-word>.</para>
<para>If this field is programmable, changing this field when GITS_CTLR.Quiescent == 0 or GITS_CTLR.Enabled == 1 is <arm-defined-word>UNPREDICTABLE</arm-defined-word>.</para></field_description>
    <field_description order="after">
      <para>It is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word> whether this field is programmable or RO.</para>
    </field_description>
    <field_resets>
      <field_reset reset_type="GIC">
        <field_reset_standard_text>AU</field_reset_standard_text>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-3_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>3</field_msb>
    <field_lsb>2</field_lsb>
    <rel_range>3:2</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-1_1" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>ImDe</field_name>
    <field_msb>1</field_msb>
    <field_lsb>1</field_lsb>
    <rel_range>1</rel_range>
    <field_description order="before"><para>In GICv3 implementations, this bit is <arm-defined-word>RES0</arm-defined-word>.</para>
<para>In GICv4 implementations, this bit is <arm-defined-word>IMPLEMENTATION DEFINED</arm-defined-word>.</para></field_description>
    <field_resets>
      <field_reset reset_type="GIC">
        <field_reset_number>'0'</field_reset_number>
      </field_reset>
    </field_resets>
  </field>
  <field id="fieldset_0-0_0" has_partial_fieldset="False" is_linked_to_partial_fieldset="False" is_access_restriction_possible="False" is_variable_length="False" is_constant_value="False" is_partial_field="False" is_conditional_field_name="False">
    <field_name>Enabled</field_name>
    <field_msb>0</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>0</rel_range>
    <field_description order="before">
      <para>Controls whether the ITS is enabled:</para>
    </field_description>
    <field_description order="after"><para>If a write to this register changes this field from 1 to 0, the ITS must ensure that both:</para>
<list type="unordered">
<listitem><content>Any caches containing mapping data are made consistent with external memory.</content>
</listitem><listitem><content>GITS_CTLR.Quiescent == 0 until all caches are consistent with external memory.</content>
</listitem></list>
<para>Changing GITS_CTLR.Enabled from 0 to 1 when GITS_CTLR.Quiescent is 0 results in <arm-defined-word>UNPREDICTABLE</arm-defined-word> behavior.</para></field_description>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0b0</field_value>
        <field_value_description>
          <para>The ITS is not enabled. Writes to <register_link state="ext" id="ext-gits_translater.xml">GITS_TRANSLATER</register_link> are ignored and no further command queue entries are processed.</para>
        </field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0b1</field_value>
        <field_value_description>
          <para>The ITS is enabled. Writes to <register_link state="ext" id="ext-gits_translater.xml">GITS_TRANSLATER</register_link> result in interrupt translations and the command queue is processed.</para>
        </field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="GIC">
        <field_reset_number>'0'</field_reset_number>
      </field_reset>
    </field_resets>
  </field>
  <text_after_fields/>
</fields>




<reg_fieldset length="32">
  <fieldat id="fieldset_0-31_31" msb="31" lsb="31"/>
  <fieldat id="fieldset_0-30_9" msb="30" lsb="9"/>
  <fieldat id="fieldset_0-8_8" msb="8" lsb="8"/>
  <fieldat id="fieldset_0-7_4" msb="7" lsb="4"/>
  <fieldat id="fieldset_0-3_2" msb="3" lsb="2"/>
  <fieldat id="fieldset_0-1_1" msb="1" lsb="1"/>
  <fieldat id="fieldset_0-0_0" msb="0" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>

      <access_mechanisms>
          






    

      </access_mechanisms>

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