#include <Library/DebugLib.h>\r
#include <Library/PcdLib.h>\r
\r
-//
-// Have to use build system to set the original value in case we are running
-// from FLASH and globals don't work. So if you do a GetHobList() and gHobList
-// and gHobList is NULL the PCD default values are used.
-//
-VOID *gHobList = NULL;\r
-\r
-\r
/**\r
Returns the pointer to the HOB list.\r
\r
VOID\r
)\r
{\r
- if (gHobList == NULL) {\r
- return (VOID *)*(UINTN*)(PcdGet32 (PcdCPUCoresNonSecStackBase) + (PcdGet32 (PcdCPUCoresNonSecStackSize) / 2) - PcdGet32 (PcdHobListPtrGlobalOffset));\r
- } else {\r
- return gHobList;\r
- }\r
+ return (VOID *)*(UINTN*)(PcdGet32 (PcdCPUCoresNonSecStackBase) +\r
+ PcdGet32 (PcdCPUCoresNonSecStackSize) -\r
+ PcdGet32 (PcdPeiGlobalVariableSize) +\r
+ PcdGet32 (PcdHobListPtrGlobalOffset));\r
}\r
\r
\r
IN VOID *HobList\r
)\r
{\r
- gHobList = HobList;\r
- \r
- //\r
- // If this code is running from ROM this could fail\r
- //\r
- return (gHobList == HobList) ? EFI_SUCCESS: EFI_UNSUPPORTED;\r
+ UINTN* HobListPtr;\r
+\r
+ HobListPtr = (UINTN*)(PcdGet32 (PcdCPUCoresNonSecStackBase) +\r
+ PcdGet32 (PcdCPUCoresNonSecStackSize) -\r
+ PcdGet32 (PcdPeiGlobalVariableSize) +\r
+ PcdGet32 (PcdHobListPtrGlobalOffset));\r
+\r
+ *HobListPtr = (UINTN)HobList;\r
+\r
+ return EFI_SUCCESS;\r
}\r
+\r
gArmPlatformTokenSpaceGuid.PcdHobListPtrGlobalOffset\r
gArmPlatformTokenSpaceGuid.PcdCPUCoresNonSecStackBase\r
gArmPlatformTokenSpaceGuid.PcdCPUCoresNonSecStackSize\r
+ gArmPlatformTokenSpaceGuid.PcdPeiGlobalVariableSize\r
\ No newline at end of file