summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c23
-rw-r--r--ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c23
-rw-r--r--ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf3
3 files changed, 40 insertions, 9 deletions
diff --git a/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c b/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
index 0e0fa3b9f3..9853c7ba85 100644
--- a/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
+++ b/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
@@ -15,9 +15,11 @@
#include <Library/ArmLib.h>
#include <Library/ArmGicLib.h>
-ARM_GIC_ARCH_REVISION
+STATIC ARM_GIC_ARCH_REVISION mGicArchRevision;
+
+RETURN_STATUS
EFIAPI
-ArmGicGetSupportedArchRevision (
+ArmGicArchLibInitialize (
VOID
)
{
@@ -43,9 +45,22 @@ ArmGicGetSupportedArchRevision (
IccSre = ArmGicV3GetControlSystemRegisterEnable ();
}
if (IccSre & ICC_SRE_EL2_SRE) {
- return ARM_GIC_ARCH_REVISION_3;
+ mGicArchRevision = ARM_GIC_ARCH_REVISION_3;
+ goto Done;
}
}
- return ARM_GIC_ARCH_REVISION_2;
+ mGicArchRevision = ARM_GIC_ARCH_REVISION_2;
+
+Done:
+ return RETURN_SUCCESS;
+}
+
+ARM_GIC_ARCH_REVISION
+EFIAPI
+ArmGicGetSupportedArchRevision (
+ VOID
+ )
+{
+ return mGicArchRevision;
}
diff --git a/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c b/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c
index f256de7046..f8822a2245 100644
--- a/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c
+++ b/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c
@@ -15,9 +15,11 @@
#include <Library/ArmLib.h>
#include <Library/ArmGicLib.h>
-ARM_GIC_ARCH_REVISION
+STATIC ARM_GIC_ARCH_REVISION mGicArchRevision;
+
+RETURN_STATUS
EFIAPI
-ArmGicGetSupportedArchRevision (
+ArmGicArchLibInitialize (
VOID
)
{
@@ -43,9 +45,22 @@ ArmGicGetSupportedArchRevision (
IccSre = ArmGicV3GetControlSystemRegisterEnable ();
}
if (IccSre & ICC_SRE_EL2_SRE) {
- return ARM_GIC_ARCH_REVISION_3;
+ mGicArchRevision = ARM_GIC_ARCH_REVISION_3;
+ goto Done;
}
}
- return ARM_GIC_ARCH_REVISION_2;
+ mGicArchRevision = ARM_GIC_ARCH_REVISION_2;
+
+Done:
+ return RETURN_SUCCESS;
+}
+
+ARM_GIC_ARCH_REVISION
+EFIAPI
+ArmGicGetSupportedArchRevision (
+ VOID
+ )
+{
+ return mGicArchRevision;
}
diff --git a/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf b/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf
index d71b2adc30..7dbcb08f50 100644
--- a/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf
+++ b/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf
@@ -17,7 +17,8 @@
FILE_GUID = cd67f41a-26e9-4482-90c9-a9aff803382a
MODULE_TYPE = BASE
VERSION_STRING = 1.0
- LIBRARY_CLASS = ArmGicArchLib
+ LIBRARY_CLASS = ArmGicArchLib|DXE_DRIVER UEFI_DRIVER UEFI_APPLICATION
+ CONSTRUCTOR = ArmGicArchLibInitialize
[Sources.ARM]
Arm/ArmGicArchLib.c