The data type used by variables representing the GicDistributorBase
has been inconsistently used in the ArmGic driver and the library.
The PCD defined for the GIC Distributor base address is UINT64.
However, the data types for the variables used is UINTN, INTN, and
at some places UINT32.
Therefore, update the data types to use UINTN and add necessary
typecasts when reading values from the PCD. This should then be
consistent across AArch32 and AArch64 builds.
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
---
ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c | 4 ++--
ArmPkg/Drivers/ArmGic/ArmGicLib.c | 12 ++++++------
ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c | 4 ++--
ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 4 ++--
ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 4 ++--
ArmPkg/Include/Library/ArmGicLib.h | 18 +++++++++---------
6 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c
index d560c42fc9f3d5e86c2aece504102f43cb841877..9ac073db36ce92fc14de71e9a264059afd63d729 100644
--- a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c
+++ b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2013-2017, ARM Ltd. All rights reserved.<BR>
+Copyright (c) 2013-2021, Arm Ltd. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -61,7 +61,7 @@ GicGetDistributorIcfgBaseAndBit (
RegIndex = Source / ARM_GIC_ICDICFR_F_STRIDE; // NOTE: truncation is significant
Field = Source % ARM_GIC_ICDICFR_F_STRIDE;
- *RegAddress = PcdGet64 (PcdGicDistributorBase)
+ *RegAddress = (UINTN)PcdGet64 (PcdGicDistributorBase)
+ ARM_GIC_ICDICFR
+ (ARM_GIC_ICDICFR_BYTES * RegIndex);
*Config1Bit = ((Field * ARM_GIC_ICDICFR_F_WIDTH)
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
index dd3670c7ccbb18586bb28f4ac02514055471529f..6e44e89390fcdaa89302d6505f75c43c84ce3535 100644
--- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c
+++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
@@ -117,7 +117,7 @@ ArmGicGetInterfaceIdentification (
UINTN
EFIAPI
ArmGicGetMaxNumInterrupts (
- IN INTN GicDistributorBase
+ IN UINTN GicDistributorBase
)
{
UINTN ItLines;
@@ -133,10 +133,10 @@ ArmGicGetMaxNumInterrupts (
VOID
EFIAPI
ArmGicSendSgiTo (
- IN INTN GicDistributorBase,
- IN INTN TargetListFilter,
- IN INTN CPUTargetList,
- IN INTN SgiId
+ IN UINTN GicDistributorBase,
+ IN INTN TargetListFilter,
+ IN INTN CPUTargetList,
+ IN INTN SgiId
)
{
MmioWrite32 (
@@ -390,7 +390,7 @@ ArmGicIsInterruptEnabled (
VOID
EFIAPI
ArmGicDisableDistributor (
- IN INTN GicDistributorBase
+ IN UINTN GicDistributorBase
)
{
// Disable Gic Distributor
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c b/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c
index aa4f0e2123929e0a86626b0f068d474065ca67fb..c17cbe041e8a9ceb8c8c3a6b953ff88b75f6f206 100644
--- a/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c
+++ b/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c
@@ -1,6 +1,6 @@
/** @file
*
-* Copyright (c) 2011-2015, ARM Limited. All rights reserved.
+* Copyright (c) 2011-2021, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-2-Clause-Patent
*
@@ -13,7 +13,7 @@
VOID
EFIAPI
ArmGicEnableDistributor (
- IN INTN GicDistributorBase
+ IN UINTN GicDistributorBase
)
{
ARM_GIC_ARCH_REVISION Revision;
diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
index 25290342bde4de907bef050d6f1bdd6e03f8dccc..b7d67d830e46b663e4054990e7456660fb22cda9 100644
--- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
+++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
@@ -2,7 +2,7 @@
Copyright (c) 2009, Hewlett-Packard Company. All rights reserved.<BR>
Portions copyright (c) 2010, Apple Inc. All rights reserved.<BR>
-Portions copyright (c) 2011-2017, ARM Ltd. All rights reserved.<BR>
+Portions copyright (c) 2011-2021, Arm Ltd. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -401,7 +401,7 @@ GicV2DxeInitialize (
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid);
mGicInterruptInterfaceBase = PcdGet64 (PcdGicInterruptInterfaceBase);
- mGicDistributorBase = PcdGet64 (PcdGicDistributorBase);
+ mGicDistributorBase = (UINTN)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 b1f0cd48c752666e8b01eb5a25f8639e49213119..30c3fcbc3eee8e4f41f68a669cbc59650c12ca89 100644
--- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
+++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
@@ -1,6 +1,6 @@
/** @file
*
-* Copyright (c) 2011-2018, ARM Limited. All rights reserved.
+* Copyright (c) 2011-2021, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-2-Clause-Patent
*
@@ -381,7 +381,7 @@ GicV3DxeInitialize (
// the system.
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid);
- mGicDistributorBase = PcdGet64 (PcdGicDistributorBase);
+ mGicDistributorBase = (UINTN)PcdGet64 (PcdGicDistributorBase);
mGicRedistributorsBase = PcdGet64 (PcdGicRedistributorsBase);
mGicNumInterrupts = ArmGicGetMaxNumInterrupts (mGicDistributorBase);
diff --git a/ArmPkg/Include/Library/ArmGicLib.h b/ArmPkg/Include/Library/ArmGicLib.h
index 4ab670967598f21852e46f72116bf4c78ca7dd44..72dbd1ca8d626c69d9bb8727d77fd34b4ab3af28 100644
--- a/ArmPkg/Include/Library/ArmGicLib.h
+++ b/ArmPkg/Include/Library/ArmGicLib.h
@@ -121,7 +121,7 @@ VOID
EFIAPI
ArmGicSetupNonSecure (
IN UINTN MpId,
- IN INTN GicDistributorBase,
+ IN UINTN GicDistributorBase,
IN INTN GicInterruptInterfaceBase
);
@@ -148,28 +148,28 @@ ArmGicDisableInterruptInterface (
VOID
EFIAPI
ArmGicEnableDistributor (
- IN INTN GicDistributorBase
+ IN UINTN GicDistributorBase
);
VOID
EFIAPI
ArmGicDisableDistributor (
- IN INTN GicDistributorBase
+ IN UINTN GicDistributorBase
);
UINTN
EFIAPI
ArmGicGetMaxNumInterrupts (
- IN INTN GicDistributorBase
+ IN UINTN GicDistributorBase
);
VOID
EFIAPI
ArmGicSendSgiTo (
- IN INTN GicDistributorBase,
- IN INTN TargetListFilter,
- IN INTN CPUTargetList,
- IN INTN SgiId
+ IN UINTN GicDistributorBase,
+ IN INTN TargetListFilter,
+ IN INTN CPUTargetList,
+ IN INTN SgiId
);
/*
@@ -251,7 +251,7 @@ VOID
EFIAPI
ArmGicV2SetupNonSecure (
IN UINTN MpId,
- IN INTN GicDistributorBase,
+ IN UINTN GicDistributorBase,
IN INTN GicInterruptInterfaceBase
);
--
'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105176): https://edk2.groups.io/g/devel/message/105176
Mute This Topic: https://groups.io/mt/99086452/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
On Tue, 23 May 2023 at 15:04, Sami Mujawar <sami.mujawar@arm.com> wrote: > > The data type used by variables representing the GicDistributorBase > has been inconsistently used in the ArmGic driver and the library. > The PCD defined for the GIC Distributor base address is UINT64. > However, the data types for the variables used is UINTN, INTN, and > at some places UINT32. > > Therefore, update the data types to use UINTN and add necessary > typecasts when reading values from the PCD. This should then be > consistent across AArch32 and AArch64 builds. > > Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> > --- > ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c | 4 ++-- > ArmPkg/Drivers/ArmGic/ArmGicLib.c | 12 ++++++------ > ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c | 4 ++-- > ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 4 ++-- > ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c | 4 ++-- > ArmPkg/Include/Library/ArmGicLib.h | 18 +++++++++--------- > 6 files changed, 23 insertions(+), 23 deletions(-) > > diff --git a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c > index d560c42fc9f3d5e86c2aece504102f43cb841877..9ac073db36ce92fc14de71e9a264059afd63d729 100644 > --- a/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c > +++ b/ArmPkg/Drivers/ArmGic/ArmGicCommonDxe.c > @@ -1,6 +1,6 @@ > /*++ > > -Copyright (c) 2013-2017, ARM Ltd. All rights reserved.<BR> > +Copyright (c) 2013-2021, Arm Ltd. All rights reserved.<BR> off by 2 ? > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -61,7 +61,7 @@ GicGetDistributorIcfgBaseAndBit ( > > RegIndex = Source / ARM_GIC_ICDICFR_F_STRIDE; // NOTE: truncation is significant > Field = Source % ARM_GIC_ICDICFR_F_STRIDE; > - *RegAddress = PcdGet64 (PcdGicDistributorBase) > + *RegAddress = (UINTN)PcdGet64 (PcdGicDistributorBase) > + ARM_GIC_ICDICFR > + (ARM_GIC_ICDICFR_BYTES * RegIndex); > *Config1Bit = ((Field * ARM_GIC_ICDICFR_F_WIDTH) > diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c b/ArmPkg/Drivers/ArmGic/ArmGicLib.c > index dd3670c7ccbb18586bb28f4ac02514055471529f..6e44e89390fcdaa89302d6505f75c43c84ce3535 100644 > --- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c > +++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c > @@ -117,7 +117,7 @@ ArmGicGetInterfaceIdentification ( > UINTN > EFIAPI > ArmGicGetMaxNumInterrupts ( > - IN INTN GicDistributorBase > + IN UINTN GicDistributorBase > ) > { > UINTN ItLines; > @@ -133,10 +133,10 @@ ArmGicGetMaxNumInterrupts ( > VOID > EFIAPI > ArmGicSendSgiTo ( > - IN INTN GicDistributorBase, > - IN INTN TargetListFilter, > - IN INTN CPUTargetList, > - IN INTN SgiId > + IN UINTN GicDistributorBase, > + IN INTN TargetListFilter, > + IN INTN CPUTargetList, > + IN INTN SgiId > ) > { > MmioWrite32 ( > @@ -390,7 +390,7 @@ ArmGicIsInterruptEnabled ( > VOID > EFIAPI > ArmGicDisableDistributor ( > - IN INTN GicDistributorBase > + IN UINTN GicDistributorBase > ) > { > // Disable Gic Distributor > diff --git a/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c b/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c > index aa4f0e2123929e0a86626b0f068d474065ca67fb..c17cbe041e8a9ceb8c8c3a6b953ff88b75f6f206 100644 > --- a/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c > +++ b/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c > @@ -1,6 +1,6 @@ > /** @file > * > -* Copyright (c) 2011-2015, ARM Limited. All rights reserved. > +* Copyright (c) 2011-2021, Arm Limited. All rights reserved. > * > * SPDX-License-Identifier: BSD-2-Clause-Patent > * > @@ -13,7 +13,7 @@ > VOID > EFIAPI > ArmGicEnableDistributor ( > - IN INTN GicDistributorBase > + IN UINTN GicDistributorBase > ) > { > ARM_GIC_ARCH_REVISION Revision; > diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c > index 25290342bde4de907bef050d6f1bdd6e03f8dccc..b7d67d830e46b663e4054990e7456660fb22cda9 100644 > --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c > +++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c > @@ -2,7 +2,7 @@ > > Copyright (c) 2009, Hewlett-Packard Company. All rights reserved.<BR> > Portions copyright (c) 2010, Apple Inc. All rights reserved.<BR> > -Portions copyright (c) 2011-2017, ARM Ltd. All rights reserved.<BR> > +Portions copyright (c) 2011-2021, Arm Ltd. All rights reserved.<BR> > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -401,7 +401,7 @@ GicV2DxeInitialize ( > ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid); > > mGicInterruptInterfaceBase = PcdGet64 (PcdGicInterruptInterfaceBase); > - mGicDistributorBase = PcdGet64 (PcdGicDistributorBase); > + mGicDistributorBase = (UINTN)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 b1f0cd48c752666e8b01eb5a25f8639e49213119..30c3fcbc3eee8e4f41f68a669cbc59650c12ca89 100644 > --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c > +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c > @@ -1,6 +1,6 @@ > /** @file > * > -* Copyright (c) 2011-2018, ARM Limited. All rights reserved. > +* Copyright (c) 2011-2021, Arm Limited. All rights reserved. > * > * SPDX-License-Identifier: BSD-2-Clause-Patent > * > @@ -381,7 +381,7 @@ GicV3DxeInitialize ( > // the system. > ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid); > > - mGicDistributorBase = PcdGet64 (PcdGicDistributorBase); > + mGicDistributorBase = (UINTN)PcdGet64 (PcdGicDistributorBase); > mGicRedistributorsBase = PcdGet64 (PcdGicRedistributorsBase); > mGicNumInterrupts = ArmGicGetMaxNumInterrupts (mGicDistributorBase); > > diff --git a/ArmPkg/Include/Library/ArmGicLib.h b/ArmPkg/Include/Library/ArmGicLib.h > index 4ab670967598f21852e46f72116bf4c78ca7dd44..72dbd1ca8d626c69d9bb8727d77fd34b4ab3af28 100644 > --- a/ArmPkg/Include/Library/ArmGicLib.h > +++ b/ArmPkg/Include/Library/ArmGicLib.h > @@ -121,7 +121,7 @@ VOID > EFIAPI > ArmGicSetupNonSecure ( > IN UINTN MpId, > - IN INTN GicDistributorBase, > + IN UINTN GicDistributorBase, > IN INTN GicInterruptInterfaceBase > ); > > @@ -148,28 +148,28 @@ ArmGicDisableInterruptInterface ( > VOID > EFIAPI > ArmGicEnableDistributor ( > - IN INTN GicDistributorBase > + IN UINTN GicDistributorBase > ); > > VOID > EFIAPI > ArmGicDisableDistributor ( > - IN INTN GicDistributorBase > + IN UINTN GicDistributorBase > ); > > UINTN > EFIAPI > ArmGicGetMaxNumInterrupts ( > - IN INTN GicDistributorBase > + IN UINTN GicDistributorBase > ); > > VOID > EFIAPI > ArmGicSendSgiTo ( > - IN INTN GicDistributorBase, > - IN INTN TargetListFilter, > - IN INTN CPUTargetList, > - IN INTN SgiId > + IN UINTN GicDistributorBase, > + IN INTN TargetListFilter, > + IN INTN CPUTargetList, > + IN INTN SgiId > ); > > /* > @@ -251,7 +251,7 @@ VOID > EFIAPI > ArmGicV2SetupNonSecure ( > IN UINTN MpId, > - IN INTN GicDistributorBase, > + IN UINTN GicDistributorBase, > IN INTN GicInterruptInterfaceBase > ); > > -- > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#105188): https://edk2.groups.io/g/devel/message/105188 Mute This Topic: https://groups.io/mt/99086452/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.