Arm
®
CoreLink™ GIC-600AE Generic Interrupt Controller
Technical Reference Manual
Document ID: 101206_0003_04_en
Issue: 04
Programmers model
5.1.1 Discovery
We recommend that the operating system is provided with pointers to the start of the Distributor,
every ITS, and the first Redistributor page on each chip.
To verify that the pages relate to GIC registers, software can check these pointers against the
discovery registers, which start at offset 0xFFD0 for each GIC page. These registers allow
discovery of the architecture version and, for GIC-600AE, whether the page contains the
Distributor, ITS, or Redistributor registers. For example, to discover the page type, software can:
1.
Read from 0xFFE0 to determine the PIDR0.PART_0 value.
2.
Read from 0xFFE4 to determine the PIDR1.PART_1 value.
3.
Concatenate PART_1 (4 bits) and PART_0 (8 bits), to discover the 12-bit part number, PART_1||
PART_0. A value of:
• 0x492 indicates that this page contains Distributor registers.
• 0x493 indicates that this page contains Redistributor registers.
• 0x494 indicates that this page contains ITS registers.
When this information is known, software can obtain additional information from registers that are
specific to each page.
For Redistributors, we recommend that you examine GICR_TYPER to determine:
•
Whether the implementation has two or four pages per Redistributor that are based on
the features implemented. It can be inferred that GIC-600AE has only two pages for each
Redistributor because the GICR_TYPER.VLPIS bit indicates that it does not support virtual LPIs.
•
Whether it is the last Redistributor in the series of pages
•
Which core the Redistributor is for, based on affinity values
This information allows you to iteratively search through all Redistributors in a discovery process.
The GITS_TYPER register in the GIC-600AE indicates that you must program the ITS with unique
ProcessorNumbers, instead of physical target addresses. The GICR_TYPER contains the unique
ProcessorNumber that you must use to reference a Redistributor when programming the ITS.
In a multichip configuration, the ProcessorNumber upper bits are derived from the
chip_id tie-off signal. Therefore, the chip_id signal value must be set before the GIC
exits from reset.
For more information, see the GICv3 and GICv4 Software Overview.
Copyright © 2018–2020, 2022 Arm Limited (or its affiliates). All rights reserved.
Non-Confidential
Page 97 of 268