/* SPDX-License-Identifier: GPL-2.0 */ /* * ARM Generic Interrupt Controller (GIC) v3 specific defines */ #ifndef SELFTEST_KVM_GICV3_H #define SELFTEST_KVM_GICV3_H #include /* * Distributor registers */ #define GICD_CTLR 0x0000 #define GICD_TYPER 0x0004 #define GICD_IGROUPR 0x0080 #define GICD_ISENABLER 0x0100 #define GICD_ICENABLER 0x0180 #define GICD_ISPENDR 0x0200 #define GICD_ICPENDR 0x0280 #define GICD_ICACTIVER 0x0380 #define GICD_ISACTIVER 0x0300 #define GICD_IPRIORITYR 0x0400 #define GICD_ICFGR 0x0C00 /* * The assumption is that the guest runs in a non-secure mode. * The following bits of GICD_CTLR are defined accordingly. */ #define GICD_CTLR_RWP (1U << 31) #define GICD_CTLR_nASSGIreq (1U << 8) #define GICD_CTLR_ARE_NS (1U << 4) #define GICD_CTLR_ENABLE_G1A (1U << 1) #define GICD_CTLR_ENABLE_G1 (1U << 0) #define GICD_TYPER_SPIS(typer) ((((typer) & 0x1f) + 1) * 32) #define GICD_INT_DEF_PRI_X4 0xa0a0a0a0 /* * Redistributor registers */ #define GICR_CTLR 0x000 #define GICR_WAKER 0x014 #define GICR_CTLR_RWP (1U << 3) #define GICR_WAKER_ProcessorSleep (1U << 1) #define GICR_WAKER_ChildrenAsleep (1U << 2) /* * Redistributor registers, offsets from SGI base */ #define GICR_IGROUPR0 GICD_IGROUPR #define GICR_ISENABLER0 GICD_ISENABLER #define GICR_ICENABLER0 GICD_ICENABLER #define GICR_ISPENDR0 GICD_ISPENDR #define GICR_ISACTIVER0 GICD_ISACTIVER #define GICR_ICACTIVER0 GICD_ICACTIVER #define GICR_ICENABLER GICD_ICENABLER #define GICR_ICACTIVER GICD_ICACTIVER #define GICR_IPRIORITYR0 GICD_IPRIORITYR /* CPU interface registers */ #define SYS_ICC_PMR_EL1 sys_reg(3, 0, 4, 6, 0) #define SYS_ICC_IAR1_EL1 sys_reg(3, 0, 12, 12, 0) #define SYS_ICC_EOIR1_EL1 sys_reg(3, 0, 12, 12, 1) #define SYS_ICC_DIR_EL1 sys_reg(3, 0, 12, 11, 1) #define SYS_ICC_CTLR_EL1 sys_reg(3, 0, 12, 12, 4) #define SYS_ICC_SRE_EL1 sys_reg(3, 0, 12, 12, 5) #define SYS_ICC_GRPEN1_EL1 sys_reg(3, 0, 12, 12, 7) #define SYS_ICV_AP1R0_EL1 sys_reg(3, 0, 12, 9, 0) #define ICC_PMR_DEF_PRIO 0xf0 #define ICC_SRE_EL1_SRE (1U << 0) #define ICC_IGRPEN1_EL1_ENABLE (1U << 0) #define GICV3_MAX_CPUS 512 #endif /* SELFTEST_KVM_GICV3_H */