From 8a1f2378d74390ddfe35c70f68e0c8b03bf84089 Mon Sep 17 00:00:00 2001 From: Dennis Chen Date: Mon, 5 Sep 2016 19:38:20 +0800 Subject: ArmPkg ArmPlatformPkg ArmVirtPkg: ARM GICv2/v3 Base Address width fix-up According to the ACPI 6.0/6.1 spec, the physical base address of GICC, GICD, GICR and GIC ITS is 64-bit. So change the type of the various GIC base address PCDs to 64-bit, and fix up all users. Contributed-under: TianoCore Contribution Agreement 1.0 Cc: Leif Lindholm Signed-off-by: Dennis Chen Reviewed-by: Ard Biesheuvel --- ArmPkg/Application/LinuxLoader/AArch64/LinuxStarter.c | 2 +- ArmPkg/ArmPkg.dec | 6 +++--- ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 4 ++-- ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) (limited to 'ArmPkg') diff --git a/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarter.c b/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarter.c index 0d540c920f..d82cf85111 100644 --- a/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarter.c +++ b/ArmPkg/Application/LinuxLoader/AArch64/LinuxStarter.c @@ -97,7 +97,7 @@ StartLinux ( LINUX_KERNEL64 LinuxKernel = (LINUX_KERNEL64)LinuxImage; // Send msg to secondary cores to go to the kernel pen. - ArmGicSendSgiTo (PcdGet32 (PcdGicDistributorBase), ARM_GIC_ICDSGIR_FILTER_EVERYONEELSE, 0x0E, PcdGet32 (PcdGicSgiIntId)); + ArmGicSendSgiTo (PcdGet64 (PcdGicDistributorBase), ARM_GIC_ICDSGIR_FILTER_EVERYONEELSE, 0x0E, PcdGet32 (PcdGicSgiIntId)); // Shut down UEFI boot services. ExitBootServices() will notify every driver that created an event on // ExitBootServices event. Example the Interrupt DXE driver will disable the interrupts on this event. diff --git a/ArmPkg/ArmPkg.dec b/ArmPkg/ArmPkg.dec index c189117c67..3cdb5da3d4 100644 --- a/ArmPkg/ArmPkg.dec +++ b/ArmPkg/ArmPkg.dec @@ -251,10 +251,10 @@ # # ARM Generic Interrupt Controller # - gArmTokenSpaceGuid.PcdGicDistributorBase|0|UINT32|0x0000000C + gArmTokenSpaceGuid.PcdGicDistributorBase|0|UINT64|0x0000000C # Base address for the GIC Redistributor region that contains the boot CPU - gArmTokenSpaceGuid.PcdGicRedistributorsBase|0|UINT32|0x0000000E - gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0|UINT32|0x0000000D + gArmTokenSpaceGuid.PcdGicRedistributorsBase|0|UINT64|0x0000000E + gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0|UINT64|0x0000000D gArmTokenSpaceGuid.PcdGicSgiIntId|0|UINT32|0x00000025 # diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c index 34d4be3867..b9ecd5543a 100644 --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c +++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c @@ -259,8 +259,8 @@ GicV2DxeInitialize ( // Make sure the Interrupt Controller Protocol is not already installed in the system. ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid); - mGicInterruptInterfaceBase = PcdGet32 (PcdGicInterruptInterfaceBase); - mGicDistributorBase = PcdGet32 (PcdGicDistributorBase); + mGicInterruptInterfaceBase = PcdGet64 (PcdGicInterruptInterfaceBase); + mGicDistributorBase = PcdGet64 (PcdGicDistributorBase); mGicNumInterrupts = ArmGicGetMaxNumInterrupts (mGicDistributorBase); for (Index = 0; Index < mGicNumInterrupts; Index++) { diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c index 983936f373..8af97a93b1 100644 --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c @@ -245,8 +245,8 @@ GicV3DxeInitialize ( // Make sure the Interrupt Controller Protocol is not already installed in the system. ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid); - mGicDistributorBase = PcdGet32 (PcdGicDistributorBase); - mGicRedistributorsBase = PcdGet32 (PcdGicRedistributorsBase); + mGicDistributorBase = PcdGet64 (PcdGicDistributorBase); + mGicRedistributorsBase = PcdGet64 (PcdGicRedistributorsBase); mGicNumInterrupts = ArmGicGetMaxNumInterrupts (mGicDistributorBase); // -- cgit v1.2.3