The GICD_IROUTER<n> characteristics are:
When affinity routing is enabled, provides routing information for the SPI with INTID n.
RW fields in this register reset to architecturally UNKNOWN values.
These registers are available in all configurations of the GIC. If the GIC implementation supports two Security states, these registers are Common.
The maximum value of n is given by (32*(GICD_TYPER.ITLinesNumber+1) - 1). GICD_IROUTER<n> registers where n=0 to 31 are reserved.
GICD_IROUTER<n> is a 64-bit register.
The GICD_IROUTER<n> bit assignments are:
63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Aff3 | |||||||
Interrupt_Routing_Mode | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Aff2 | Aff1 | Aff0 | |||||||||||||||||||||
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Reserved, RES0.
Affinity level 3, the least significant affinity level field.
This field resets to an architecturally UNKNOWN value.
Interrupt Routing Mode. Defines how SPIs are routed in an affinity hierarchy:
Interrupt_Routing_Mode | Meaning |
---|---|
0b0 |
Interrupts routed to the PE specified by a.b.c.d. In this routing, a, b, c, and d are the values of fields Aff3, Aff2, Aff1, and Aff0 respectively. |
0b1 |
Interrupts routed to any PE defined as a participating node. |
If GICD_IROUTER<n>.IRM == 0 and the affinity path does not correspond to an implemented PE, then if the corresponding interrupt becomes pending it will not be forwarded to any PE and will remain pending.
In implementations that do not require 1 of N distribution of SPIs, this bit might be RAZ/WI.
When this bit is set to 1, GICD_IROUTER<n>.{Aff3, Aff2, Aff1, Aff0} are UNKNOWN.
An implementation might choose to make the Aff<n> fields RO when this field is 1.
This field resets to an architecturally UNKNOWN value.
Reserved, RES0.
Affinity level 2, an intermediate affinity level field.
This field resets to an architecturally UNKNOWN value.
Affinity level 1, an intermediate affinity level field.
This field resets to an architecturally UNKNOWN value.
Affinity level 0, the most significant affinity level field.
This field resets to an architecturally UNKNOWN value.
For an SPI with INTID m:
These registers are used only when affinity routing is enabled. When affinity routing is not enabled:
When affinity routing becomes enabled for a Security state (for example, following a reset or following a write to GICD_CTLR) the value of all writeable fields in this register is UNKNOWN for that Security state. When the group of an interrupt changes so the ARE setting for the interrupt changes to 1, the value of this register is UNKNOWN for that interrupt.
If GICD_CTLR.DS==0, unless the GICD_NSACR<n> registers permit Non-secure software to control Group 0 and Secure Group 1 interrupts, any GICD_IROUTER<n> registers that correspond to Group 0 or Secure Group 1 interrupts are accessible only by Secure accesses and are RAZ/WI to Non-secure accesses.
For each interrupt, a GIC implementation might support fewer than 256 values for an affinity level. In this case, some bits of the corresponding affinity level field might be RO. Implementations must ensure that an interrupt that is pending at the time of the write uses either the old value or the new value and must ensure that the interrupt is neither lost nor handled more than one time. The effect of the change must be visible in finite time.
Component | Offset | Instance |
---|---|---|
GIC Distributor | 0x6000 + 8n | GICD_IROUTER<n> |
This interface is accessible as follows:
13/12/2018 16:42; 6379d01c197f1d40720d32d0f84c419c9187c009
Copyright © 2010-2018 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.