<?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>GICD_SPENDSGIR&lt;n&gt;</reg_short_name>
        
        <reg_long_name>SGI Set-Pending Registers</reg_long_name>



      
          <reg_array>
              <reg_array_start>0</reg_array_start>
              <reg_array_end>3</reg_array_end>
         </reg_array>
      

    
  <reg_address
      external_access="False"
    mem_map_access="True"
      power_domain="None"
  >
    <reg_component>GIC Distributor</reg_component>
    <reg_frame>Dist_base</reg_frame>
    <reg_offset><hexnumber>0x0F20</hexnumber> + (4 * n)</reg_offset>
    <reg_instance>GICD_SPENDSGIR&lt;n&gt;</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>Adds the pending state to an SGI.</para>

      </purpose_text>
      <purpose_text>
        <para>A write to this register changes the state of an inactive SGI to pending, and the state of an active SGI to active and pending.</para>
      </purpose_text>

        </reg_purpose>

      <reg_groups>
            <reg_group>GICD</reg_group>
      </reg_groups>
      <reg_configuration>
        
    
      <configuration_text>
        <para>Four SGI set-pending registers are implemented. Each register contains eight set-pending bits for each of four SGIs, for a total of 16 possible SGIs.</para>

      </configuration_text>
      <configuration_text>
        <para>In multiprocessor implementations, each PE has a copy of these registers.</para>
      </configuration_text>

      </reg_configuration>
      
      
        
      <reg_attributes>
          
    
      <attributes_text>
        <para>GICD_SPENDSGIR&lt;n&gt; 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_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>SGI_set_pending_bits&lt;x&gt;</field_name>
    <field_msb>31</field_msb>
    <field_lsb>0</field_lsb>
    <rel_range>31:0</rel_range>
    <field_description order="before"><para>Adds the pending state to SGI number 4n + x for the PE corresponding to the bit number written to.</para>
<para>Reads and writes have the following behavior:</para></field_description>
    <field_array_indexes index_variable="x" element_size="8" range_specifier="8x+7:8x">
      <field_array_index>
        <field_array_start>3</field_array_start>
        <field_array_end>0</field_array_end>
      </field_array_index>
    </field_array_indexes>
    <field_values impdef="False">
      <field_value_instance>
        <field_value>0x00</field_value>
        <field_value_description><para>If read, indicates that the SGI from the corresponding PE is not pending and is not active and pending.</para>
<para>If written, has no effect.</para></field_value_description>
      </field_value_instance>
      <field_value_instance>
        <field_value>0x01</field_value>
        <field_value_description><para>If read, indicates that the SGI from the corresponding PE is pending or is active and pending.</para>
<para>If written, adds the pending state to the SGI for the corresponding PE.</para></field_value_description>
      </field_value_instance>
    </field_values>
    <field_resets>
      <field_reset reset_type="GIC">
        <field_reset_expression>0x00000000</field_reset_expression>
      </field_reset>
    </field_resets>
  </field>
  <text_after_fields><para>For SGI ID m, generated by processing element C writing to the corresponding <register_link state="ext" id="ext-gicd_sgir.xml">GICD_SGIR</register_link> field, where DIV and MOD are the integer division and modulo operations:</para>
<list type="unordered">
<listitem><content>The corresponding GICD_SPENDSGIR&lt;n&gt; number is given by n = m DIV 4.</content>
</listitem><listitem><content>The offset of the required register is (<hexnumber>0xF20</hexnumber> + (4n)).</content>
</listitem><listitem><content>The offset of the required field within the register GICD_SPENDSGIR&lt;n&gt; is given by m MOD 4.</content>
</listitem><listitem><content>The required bit in the 8-bit SGI set-pending field m is bit C.</content>
</listitem></list></text_after_fields>
</fields>




<reg_fieldset length="32">
  <fieldat id="fieldset_0-31_0" label="SGI_set_pending_bits3" msb="31" lsb="24"/>
  <fieldat id="fieldset_0-31_0" label="SGI_set_pending_bits2" msb="23" lsb="16"/>
  <fieldat id="fieldset_0-31_0" label="SGI_set_pending_bits1" msb="15" lsb="8"/>
  <fieldat id="fieldset_0-31_0" label="SGI_set_pending_bits0" msb="7" lsb="0"/>
</reg_fieldset>


      </reg_fieldsets>
        <reg_variables>
              <reg_variable variable="n" max="3"/>
        </reg_variables>

      <access_mechanisms>
          


  
    
      <access_permission_text>
        <para>These registers are used only when affinity routing is not enabled. When affinity routing is enabled for the Security state of an interrupt then the bit associated with SGI in that Security state is <arm-defined-word>RES0</arm-defined-word>. An implementation is permitted to make the register RAZ/WI in this case.</para>

      </access_permission_text>
      <access_permission_text>
        <para>A register bit that corresponds to an unimplemented SGI is RAZ/WI.</para>

      </access_permission_text>
      <access_permission_text>
        <para>These registers are byte-accessible.</para>

      </access_permission_text>
      <access_permission_text>
        <para>If the GIC implementation supports two Security states:</para>

      </access_permission_text>
      <access_permission_text>
        <list type="unordered">
<listitem><content>A register bit that corresponds to a Group 0 interrupt is RAZ/WI to Non-secure accesses.</content>
</listitem><listitem><content>Register bits corresponding to unimplemented PEs are RAZ/WI.</content>
</listitem></list>
      </access_permission_text>





    

      </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>