aboutsummaryrefslogtreecommitdiff
path: root/include/hw/arm/virt.h
diff options
context:
space:
mode:
authorLeif Lindholm <quic_llindhol@quicinc.com>2023-09-19 10:02:27 +0100
committerPeter Maydell <peter.maydell@linaro.org>2023-10-19 14:32:12 +0100
commit9036e917f8357f4e5965ebfecdab5964d40e6a40 (patch)
tree369abc91b31f979af38e764717ced61e4c21b41d /include/hw/arm/virt.h
parentd01448c79d89cfdc86228081b1dd1dfaf85fb4c3 (diff)
downloadqemu-9036e917f8357f4e5965ebfecdab5964d40e6a40.zip
qemu-9036e917f8357f4e5965ebfecdab5964d40e6a40.tar.gz
qemu-9036e917f8357f4e5965ebfecdab5964d40e6a40.tar.bz2
{include/}hw/arm: refactor virt PPI logic
GIC Private Peripheral Interrupts (PPI) are defined as GIC INTID 16-31. As in, PPI0 is INTID16 .. PPI15 is INTID31. Arm's Base System Architecture specification (BSA) lists the mandated and recommended private interrupt IDs by INTID, not by PPI index. But current definitions in virt define them by PPI index, complicating cross referencing. Meanwhile, the PPI(x) macro counterintuitively adds 16 to the input value, converting a PPI index to an INTID. Resolve this by redefining the BSA-allocated PPIs by their INTIDs, and replacing the PPI(x) macro with an INTID_TO_PPI(x) one where required. Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com> Message-id: 20230919090229.188092-2-quic_llindhol@quicinc.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/arm/virt.h')
-rw-r--r--include/hw/arm/virt.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index e1ddbea..5704d95 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -43,16 +43,16 @@
#define NUM_VIRTIO_TRANSPORTS 32
#define NUM_SMMU_IRQS 4
-#define ARCH_GIC_MAINT_IRQ 9
+#define ARCH_GIC_MAINT_IRQ 25
-#define ARCH_TIMER_VIRT_IRQ 11
-#define ARCH_TIMER_S_EL1_IRQ 13
-#define ARCH_TIMER_NS_EL1_IRQ 14
-#define ARCH_TIMER_NS_EL2_IRQ 10
+#define ARCH_TIMER_VIRT_IRQ 27
+#define ARCH_TIMER_S_EL1_IRQ 29
+#define ARCH_TIMER_NS_EL1_IRQ 30
+#define ARCH_TIMER_NS_EL2_IRQ 26
-#define VIRTUAL_PMU_IRQ 7
+#define VIRTUAL_PMU_IRQ 23
-#define PPI(irq) ((irq) + 16)
+#define INTID_TO_PPI(irq) ((irq) - 16)
/* See Linux kernel arch/arm64/include/asm/pvclock-abi.h */
#define PVTIME_SIZE_PER_CPU 64