//\r
// The protocols, PPI and GUID defintions for this module\r
//\r
-#include <Ppi/ArmGlobalVariable.h>\r
#include <Ppi/MasterBootMode.h>\r
#include <Ppi/BootInRecoveryMode.h>\r
#include <Ppi/GuidedSectionExtraction.h>\r
#include <Library/PeiServicesLib.h>\r
#include <Library/PcdLib.h>\r
\r
-#include <Guid/ArmGlobalVariableHob.h>\r
-\r
EFI_STATUS\r
EFIAPI\r
InitializePlatformPeim (\r
NULL\r
};\r
\r
-VOID\r
-EFIAPI\r
-BuildGlobalVariableHob (\r
- IN EFI_PHYSICAL_ADDRESS GlobalVariableBase,\r
- IN UINT32 GlobalVariableSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- ARM_HOB_GLOBAL_VARIABLE *Hob;\r
-\r
- Status = PeiServicesCreateHob (EFI_HOB_TYPE_GUID_EXTENSION, sizeof (ARM_HOB_GLOBAL_VARIABLE), (VOID**)&Hob);\r
- if (!EFI_ERROR(Status)) {\r
- CopyGuid (&(Hob->Header.Name), &gArmGlobalVariableGuid);\r
- Hob->GlobalVariableBase = GlobalVariableBase;\r
- Hob->GlobalVariableSize = GlobalVariableSize;\r
- }\r
-}\r
-\r
/*++\r
\r
Routine Description:\r
{\r
EFI_STATUS Status;\r
UINTN BootMode;\r
- ARM_GLOBAL_VARIABLE_PPI *ArmGlobalVariablePpi;\r
- EFI_PHYSICAL_ADDRESS GlobalVariableBase;\r
\r
DEBUG ((EFI_D_LOAD | EFI_D_INFO, "Platform PEIM Loaded\n"));\r
\r
PlatformPeim ();\r
\r
- Status = PeiServicesLocatePpi (&gArmGlobalVariablePpiGuid, 0, NULL, (VOID**)&ArmGlobalVariablePpi);\r
- if (!EFI_ERROR(Status)) {\r
- Status = ArmGlobalVariablePpi->GetGlobalVariableMemory (&GlobalVariableBase);\r
-\r
- if (!EFI_ERROR(Status)) {\r
- // Declare the Global Variable HOB\r
- BuildGlobalVariableHob (GlobalVariableBase, FixedPcdGet32 (PcdPeiGlobalVariableSize));\r
- }\r
- }\r
-\r
BootMode = ArmPlatformGetBootMode ();\r
Status = (**PeiServices).SetBootMode (PeiServices, (UINT8) BootMode);\r
ASSERT_EFI_ERROR (Status);\r