\r
--*/\r
{\r
- PEI_FLASH_MAP_PPI *FlashMapPpi;\r
- EFI_FLASH_SUBAREA_ENTRY *VariableStoreEntry;\r
- UINT32 NumEntries;\r
EFI_HOB_GUID_TYPE *GuidHob;\r
VARIABLE_STORE_HEADER *VariableStoreHeader;\r
VARIABLE_HEADER *Variable;\r
-\r
- EFI_STATUS Status;\r
-\r
VARIABLE_HEADER *MaxIndex;\r
VARIABLE_INDEX_TABLE *IndexTable;\r
UINT32 Count;\r
+ UINT8 *VariableBase;\r
\r
if (VariableName != 0 && VendorGuid == NULL) {\r
return EFI_INVALID_PARAMETER;\r
if (IndexTable->StartPtr || IndexTable->EndPtr) {\r
Variable = IndexTable->StartPtr;\r
} else {\r
- //\r
- // Locate FlashMap PPI\r
- //\r
- Status = (**PeiServices).LocatePpi (\r
- PeiServices,\r
- &gPeiFlashMapPpiGuid,\r
- 0,\r
- NULL,\r
- (VOID **) &FlashMapPpi\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- //\r
- // Get flash area info for variables\r
- //\r
- Status = FlashMapPpi->GetAreaInfo (\r
- PeiServices,\r
- FlashMapPpi,\r
- EFI_FLASH_AREA_EFI_VARIABLES,\r
- NULL,\r
- &NumEntries,\r
- &VariableStoreEntry\r
- );\r
-\r
- //\r
- // Currently only one non-volatile variable store is supported\r
- //\r
- if (NumEntries != 1) {\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- VariableStoreHeader = (VARIABLE_STORE_HEADER *) (UINTN) (VariableStoreEntry->Base);\r
-\r
+ VariableBase = (UINT8 *) (UINTN) PcdGet32 (PcdFlashNvStorageVariableBase);\r
+ VariableStoreHeader = (VARIABLE_STORE_HEADER *) (VariableBase + \\r
+ ((EFI_FIRMWARE_VOLUME_HEADER *) (VariableBase)) -> HeaderLength);\r
+ \r
if (GetVariableStoreStatus (VariableStoreHeader) != EfiValid) {\r
return EFI_UNSUPPORTED;\r
}\r