Revision: 18100
http://sourceforge.net/p/edk2/code/18100
Author: abiesheuvel
Date: 2015-07-28 20:45:10 +0000 (Tue, 28 Jul 2015)
Log Message:
-----------
ArmPkg: cache detected revision in ArmGicArchLib
Instead of inferring the GIC revision from the CPU id registers
and the presence/availability of the system register interface
upon each invocation, move the logic to a constructor and cache
the result.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Laszlo Ersek <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
Tested-by: Leif Lindholm <[email protected]>
Modified Paths:
--------------
trunk/edk2/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
trunk/edk2/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c
trunk/edk2/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf
Modified: trunk/edk2/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
2015-07-28 20:44:58 UTC (rev 18099)
+++ trunk/edk2/ArmPkg/Library/ArmGicArchLib/AArch64/ArmGicArchLib.c
2015-07-28 20:45:10 UTC (rev 18100)
@@ -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 @@
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;
+}
Modified: trunk/edk2/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c 2015-07-28
20:44:58 UTC (rev 18099)
+++ trunk/edk2/ArmPkg/Library/ArmGicArchLib/Arm/ArmGicArchLib.c 2015-07-28
20:45:10 UTC (rev 18100)
@@ -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 @@
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;
+}
Modified: trunk/edk2/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf
===================================================================
--- trunk/edk2/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf 2015-07-28
20:44:58 UTC (rev 18099)
+++ trunk/edk2/ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf 2015-07-28
20:45:10 UTC (rev 18100)
@@ -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
------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits