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 <leif.lindholm@linaro.org> Signed-off-by: Dennis Chen <dennis.chen@arm.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
committed by
Ard Biesheuvel
parent
d796d33f18
commit
8a1f2378d7
@@ -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.
|
||||
|
@@ -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
|
||||
|
||||
#
|
||||
|
@@ -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++) {
|
||||
|
@@ -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);
|
||||
|
||||
//
|
||||
|
Reference in New Issue
Block a user