← Home

ICC_IDR0_EL1

Interrupt Controller ID Register 0

Contains information about features implemented by the GICv5 CPU interface.

Configuration

This register is present only when FEAT_GCIE is implemented and FEAT_AA64 is implemented. Otherwise, direct accesses to ICC_IDR0_EL1 are UNDEFINED.

Attributes

ICC_IDR0_EL1 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
RES0
RES0GCIE_LEGACYPRI_BITSID_BITS

Bits [63:12]:

Reserved, RES0.

GCIE_LEGACY, bits [11:8]:

Indicates support for legacy GICv3.3 virtual CPU interface.

The value of this field is an IMPLEMENTATION DEFINED choice of:

GCIE_LEGACYMeaning
0b0000

Legacy GICv3.3 virtual CPU interface is not implemented

0b0001

Legacy GICv3.3 virtual CPU interface is implemented

FEAT_GCIE_LEGACY extension implements the functionality identified by the value 0b0001.

Access to this field is RO.

PRI_BITS, bits [7:4]:

The number of priority bits implemented, minus one.

The number of supported priority bits is 5.

Other values are reserved.

Reads as 0b0100.

Access to this field is RO.

ID_BITS, bits [3:0]:

Identifier bits.

The number of interrupt identifier bits supported.

The value of this field is an IMPLEMENTATION DEFINED choice of:

ID_BITSMeaning
0b0000

16 bits

0b0001

24 bits

Access to this field is RO.

Access Instructions

This register is Read-only.

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, ICC_IDR0_EL1

(op0 = 0b11, op1 = 0b000, CRn = 0b1100, CRm = 0b1010, op2 = 0b010)

if !(IsFeatureImplemented(FEAT_GCIE) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2().IMO == '1' && IsFeatureImplemented(FEAT_GCIE_LEGACY) && ICH_VCTLR_EL2().V3 == '1' then Undefined(); elsif EL2Enabled() && ICH_HFGRTR_EL2().ICC_IDRn_EL1 == '0' then AArch64_SystemAccessTrap(EL2, 0x18); else X{64}(t) = ICC_IDR0_EL1(); end; elsif PSTATE.EL == EL2 then X{64}(t) = ICC_IDR0_EL1(); elsif PSTATE.EL == EL3 then X{64}(t) = ICC_IDR0_EL1(); end;


Version 2026.06 — Copyright © 2010-2026 Arm Limited or its affiliates.

This site is provided as a community resource and is NOT affiliated with nor endorsed by Arm Limited.