/** @file\r
HOB Library.\r
\r
- Copyright (c) 2006, Intel Corporation<BR>\r
+ Copyright (c) 2006 - 2007, Intel Corporation<BR>\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
EFI_STATUS Status;\r
VOID *HobList;\r
\r
- Status = PeiCoreGetHobList (&HobList);\r
+ Status = PeiServicesGetHobList (&HobList);\r
ASSERT_EFI_ERROR (Status);\r
ASSERT (HobList != NULL);\r
\r
return GetNextGuidHob (Guid, HobList);\r
}\r
\r
+/**\r
+ Get the Boot Mode from the HOB list.\r
+\r
+ This function returns the system boot mode information from the \r
+ PHIT HOB in HOB list.\r
+\r
+ @param VOID\r
+\r
+ @return The Boot Mode.\r
+\r
+**/\r
+EFI_BOOT_MODE\r
+EFIAPI\r
+GetBootModeHob (\r
+ VOID\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_BOOT_MODE BootMode;\r
+\r
+ Status = PeiServicesGetBootMode (&BootMode);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return BootMode;\r
+}\r
+\r
/**\r
Adds a new HOB to the HOB List.\r
\r
@return The address of new HOB.\r
\r
**/\r
+STATIC\r
VOID *\r
InternalPeiCreateHob (\r
IN UINT16 Type,\r
EFI_STATUS Status;\r
VOID *Hob;\r
\r
- Status = PeiCoreCreateHob (Type, Length, &Hob);\r
+ Status = PeiServicesCreateHob (Type, Length, &Hob);\r
//\r
// Assume the process of HOB building is always successful.\r
//\r
@param ModuleName The GUID File Name of the module.\r
@param MemoryAllocationModule The 64 bit physical address of the module.\r
@param ModuleLength The length of the module in bytes.\r
- @param EntryPoint The 64 bit physical address of the module\92s entry point.\r
+ @param EntryPoint The 64 bit physical address of the module's entry point.\r
\r
**/\r
VOID\r
Hob->MemoryAllocationHeader.MemoryLength = ModuleLength;\r
Hob->MemoryAllocationHeader.MemoryType = EfiBootServicesCode;\r
\r
+ //\r
+ // Zero the reserved space to match HOB spec\r
+ //\r
+ ZeroMem (Hob->MemoryAllocationHeader.Reserved, sizeof (Hob->MemoryAllocationHeader.Reserved));\r
+ \r
CopyGuid (&Hob->ModuleName, ModuleName);\r
Hob->EntryPoint = EntryPoint;\r
}\r
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
If Guid is NULL, then ASSERT().\r
If there is no additional space for HOB creation, then ASSERT().\r
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
\r
@param Guid The GUID to tag the customized HOB.\r
@param DataLength The size of the data payload for the GUID HOB.\r
If Guid is NULL, then ASSERT().\r
If Data is NULL and DataLength > 0, then ASSERT().\r
If there is no additional space for HOB creation, then ASSERT().\r
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
\r
@param Guid The GUID to tag the customized HOB.\r
@param Data The data to be copied into the data field of the GUID HOB.\r
{\r
VOID *HobData;\r
\r
+ ASSERT (Data != NULL || DataLength == 0);\r
+\r
HobData = BuildGuidHob (Guid, DataLength);\r
\r
return CopyMem (HobData, Data, DataLength);\r
\r
Hob->SizeOfMemorySpace = SizeOfMemorySpace;\r
Hob->SizeOfIoSpace = SizeOfIoSpace;\r
+\r
+ //\r
+ // Zero the reserved space to match HOB spec\r
+ //\r
+ ZeroMem (Hob->Reserved, sizeof (Hob->Reserved)); \r
}\r
\r
/**\r
Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress;\r
Hob->AllocDescriptor.MemoryLength = Length;\r
Hob->AllocDescriptor.MemoryType = EfiConventionalMemory;\r
+\r
+ //\r
+ // Zero the reserved space to match HOB spec\r
+ //\r
+ ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved));\r
}\r
\r
/**\r
Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress;\r
Hob->AllocDescriptor.MemoryLength = Length;\r
Hob->AllocDescriptor.MemoryType = MemoryType;\r
+\r
+ //\r
+ // Zero the reserved space to match HOB spec\r
+ //\r
+ ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved));\r
}\r
\r
/**\r
Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress;\r
Hob->AllocDescriptor.MemoryLength = Length;\r
Hob->AllocDescriptor.MemoryType = MemoryType;\r
+ //\r
+ // Zero the reserved space to match HOB spec\r
+ //\r
+ ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved));\r
}\r