4.3.17. SGI Set-Pending Registers, GICD_SPENDSGIRn

The GICD_SPENDSGIR characteristics are:

Purpose

The GICD_SPENDSGIRn registers provide a set-pending bit for each supported SGI and source processor combination. When a processor writes a 1 to a set-pending bit, the pending state is applied to the corresponding SGI for the corresponding source processor. Writing a 0 has no effect. Reading a bit identifies whether the SGI is pending, from the corresponding source processor, on the reading processor.

These registers are used when preserving and restoring GIC state.

Note

In these registers, and in the GICD_CPENDSGIRn registers, an SGI is identified by the combination of SGI number and source processor.

Usage constraints

A register bit corresponding to an unimplemented SGI is RAZ/WI.

These registers are byte-accessible.

If the GIC implements the Security Extensions:

  • a register bit that corresponds to a Group 0 interrupt is RAZ/WI to Non-secure accesses

  • if the GIC supports fewer than eight processors, register bits corresponding to the non-implemented processors are RAZ/WI.

Note

  • In a multiprocessor implementation, the processor accessing the register can change the SGI pending status only on the corresponding interface. Changing the pending status of an SGI for one target processor does not affect the status of that SGI on any other processor.

  • PPIs and SPIs both use the Interrupt Set-Pending registers, GICD_ISPENDRn.

Configurations

These registers are present only in GICv2. The register locations are reserved in GICv1.

Four SGI Set-Pending registers are implemented. The registers contain a bit for each of eight possible source processors, for each of the 16 possible SGIs. That is, each register contains eight set-pending bits for each of four SGIs.

In a multiprocessor implementation, the GICD_SPENDSGIRn registers are banked for each connected processor.

Attributes

See the register summary in Table 4.1.

Figure 4.19 shows the GICD_SPENDSGIRn bit assignments.

Figure 4.19. GICD_SPENDSGIR bit assignments

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


Table 4.24 shows the GICD_SPENDSGIR bit assignments.

Table 4.24. GICD_SPENDSGIRn bit assignments

BitsNameFunction
[8y+7:8y], for y=0 to 3SGI x Set-pending bits

For each bit:

Reads
0

SGI x for the corresponding processor is not pending[a].

1

SGI x for the corresponding processor is pending [a].

Writes
0

Has no effect.

1

Adds the pending state of SGI x for the corresponding processor, if it is not already pending. If SGI x is already pending for the corresponding processor then the write has no effect.

See text for the relation between the SGI number, x, the GICD_SPENDSGIRn register number, n, and the field number, y.

Note

All accesses relate only to SGIs that target the processor making the access.

[a] Pending interrupts include interrupts that are active and pending.


For SGI ID x, generated by CPU C writing to its GICD_SGIR, when DIV and MOD are the integer division and modulo operations:

Copyright © 2008, 2011 ARM Limited. All rights reserved.ARM IHI 0048B
Non-ConfidentialID061411