summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2015-11-27 17:04:59 +0000
committerabiesheuvel <abiesheuvel@Edk2>2015-11-27 17:04:59 +0000
commit183dda942b5b897dce91a78d8de2a699cad675e3 (patch)
tree85275e8317dc751ae3e188d432e226e47372687c
parent21c1719318056691a3e5901c6e28e5ba2b70afe2 (diff)
downloadedk2-platforms-183dda942b5b897dce91a78d8de2a699cad675e3.tar.xz
ArmPlatformPkg/PrePiHobListPointerLib: use thread ID register
This updates the PrePiHobListPointerLib implementation in ArmPlatformPkg to move away from ArmPlatformGlobalVariableLib and instead use the thread ID CPU registers (TPIDRURW and TPIDR_EL0 for v7 and v8, respectively) for storing the HobList pointer. Since PrePiHobListPointerLib is specific to PrePi (where PEI core is skipped) we can share these registers with the PEI services table pointer. By the same reasoning, the PEI services table pointer and the HobList pointer already shared the same offset in the ArmPlatformGlobalVariable array. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18982 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--ArmPlatformPkg/ArmPlatformPkg.dec3
-rwxr-xr-xArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointer.c12
-rwxr-xr-xArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf7
3 files changed, 7 insertions, 15 deletions
diff --git a/ArmPlatformPkg/ArmPlatformPkg.dec b/ArmPlatformPkg/ArmPlatformPkg.dec
index 45aeaeee75..cb95516881 100644
--- a/ArmPlatformPkg/ArmPlatformPkg.dec
+++ b/ArmPlatformPkg/ArmPlatformPkg.dec
@@ -87,7 +87,8 @@
# PeiServicePtr and HobListPtr shares the same location in the PEI Global Variable list
# PeiServicePtr is only valid with PEI Core and HobListPtr only when the PEI Core is skipped.
gArmPlatformTokenSpaceGuid.PcdPeiServicePtrGlobalOffset|0x0|UINT32|0x00000017
- gArmPlatformTokenSpaceGuid.PcdHobListPtrGlobalOffset|0x0|UINT32|0x00000018
+ ## TO BE REMOVED
+ ## gArmPlatformTokenSpaceGuid.PcdHobListPtrGlobalOffset|0x0|UINT32|0x00000018
# Size to reserve in the primary core stack for SEC Global Variables
gArmPlatformTokenSpaceGuid.PcdSecGlobalVariableSize|0x0|UINT32|0x00000031
diff --git a/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointer.c b/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointer.c
index 8932e10049..23e366db2f 100755
--- a/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointer.c
+++ b/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointer.c
@@ -13,10 +13,9 @@
**/
#include <PiPei.h>
-#include <Library/ArmPlatformGlobalVariableLib.h>
+#include <Library/ArmLib.h>
#include <Library/PrePiHobListPointerLib.h>
#include <Library/DebugLib.h>
-#include <Library/PcdLib.h>
/**
Returns the pointer to the HOB list.
@@ -32,11 +31,7 @@ PrePeiGetHobList (
VOID
)
{
- VOID* HobList;
-
- ArmPlatformGetGlobalVariable (PcdGet32 (PcdHobListPtrGlobalOffset), sizeof(VOID*), &HobList);
-
- return HobList;
+ return (VOID *)ArmReadTpidrurw();
}
@@ -53,8 +48,7 @@ PrePeiSetHobList (
IN VOID *HobList
)
{
- ArmPlatformSetGlobalVariable (PcdGet32 (PcdHobListPtrGlobalOffset), sizeof(VOID*), &HobList);
+ ArmWriteTpidrurw((UINTN)HobList);
return EFI_SUCCESS;
}
-
diff --git a/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf b/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
index 16b201e8f6..0b98f6ffda 100755
--- a/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
+++ b/ArmPlatformPkg/Library/PrePiHobListPointerLib/PrePiHobListPointerLib.inf
@@ -25,11 +25,8 @@
[Packages]
MdePkg/MdePkg.dec
- ArmPlatformPkg/ArmPlatformPkg.dec
+ ArmPkg/ArmPkg.dec
EmbeddedPkg/EmbeddedPkg.dec
[LibraryClasses]
- ArmPlatformGlobalVariableLib
-
-[FixedPcd.common]
- gArmPlatformTokenSpaceGuid.PcdHobListPtrGlobalOffset
+ ArmLib