//\r
VARIABLE_GLOBAL *mGlobal;\r
\r
-STATIC\r
VOID\r
EFIAPI\r
-OnVirtualAddressChange (\r
+OnVirtualAddressChangeFsv (\r
IN EFI_EVENT Event,\r
IN VOID *Context\r
);\r
\r
-STATIC\r
VOID\r
EFIAPI\r
OnSimpleFileSystemInstall (\r
IN VOID *Context\r
);\r
\r
-STATIC\r
BOOLEAN\r
IsValidVariableHeader (\r
IN VARIABLE_HEADER *Variable\r
return TRUE;\r
}\r
\r
-STATIC\r
VARIABLE_STORE_STATUS\r
GetVariableStoreStatus (\r
IN VARIABLE_STORE_HEADER *VarStoreHeader\r
}\r
}\r
\r
-STATIC\r
UINT8 *\r
GetVariableDataPtr (\r
IN VARIABLE_HEADER *Variable\r
return (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (Variable) + Variable->NameSize + GET_PAD_SIZE (Variable->NameSize));\r
}\r
\r
-STATIC\r
VARIABLE_HEADER *\r
GetNextVariablePtr (\r
IN VARIABLE_HEADER *Variable\r
return (VARIABLE_HEADER *) ((UINTN) GetVariableDataPtr (Variable) + Variable->DataSize + GET_PAD_SIZE (Variable->DataSize));\r
}\r
\r
-STATIC\r
VARIABLE_HEADER *\r
GetEndPointer (\r
IN VARIABLE_STORE_HEADER *VarStoreHeader\r
return FALSE;\r
}\r
\r
-STATIC\r
EFI_STATUS\r
Reclaim (\r
IN VARIABLE_STORAGE_TYPE StorageType,\r
return Status;\r
}\r
\r
-STATIC\r
EFI_STATUS\r
FindVariable (\r
IN CHAR16 *VariableName,\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
//\r
// The size of the VariableName, including the Unicode Null in bytes plus\r
// the DataSize is limited to maximum size of MAX_HARDWARE_ERROR_VARIABLE_SIZE (32K)\r
return EFI_INVALID_PARAMETER;\r
} \r
} \r
-#else \r
- //\r
- // The size of the VariableName, including the Unicode Null in bytes plus\r
- // the DataSize is limited to maximum size of MAX_VARIABLE_SIZE (1024) bytes.\r
- //\r
- if ((DataSize > MAX_VARIABLE_SIZE) ||\r
- (sizeof (VARIABLE_HEADER) + StrSize (VariableName) + DataSize > MAX_VARIABLE_SIZE)) {\r
- return EFI_INVALID_PARAMETER;\r
- } \r
-#endif\r
+\r
//\r
// Check whether the input variable is already existed\r
//\r
return EFI_SUCCESS;\r
}\r
\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
EFI_STATUS\r
EFIAPI\r
QueryVariableInfo (\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A) \r
if((Attributes & (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_HARDWARE_ERROR_RECORD)) == 0) {\r
//\r
// Make sure the Attributes combination is supported by the platform.\r
//\r
return EFI_UNSUPPORTED; \r
} \r
-#else\r
- if((Attributes & (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS)) == 0) {\r
- //\r
- // Make sure the Attributes combination is supported by the platform.\r
- //\r
- return EFI_UNSUPPORTED; \r
- } \r
-#endif \r
else if ((Attributes & (EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS)) == EFI_VARIABLE_RUNTIME_ACCESS) {\r
//\r
// Make sure if runtime bit is set, boot service bit is set also.\r
//\r
*MaximumVariableSize = MAX_VARIABLE_SIZE - sizeof (VARIABLE_HEADER);\r
\r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
//\r
// Harware error record variable needs larger size.\r
//\r
if ((Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) == EFI_VARIABLE_HARDWARE_ERROR_RECORD) {\r
*MaximumVariableSize = MAX_HARDWARE_ERROR_VARIABLE_SIZE - sizeof (VARIABLE_HEADER);\r
}\r
-#endif\r
\r
//\r
// Point to the starting address of the variables.\r
\r
return EFI_SUCCESS;\r
}\r
-#endif\r
\r
EFI_STATUS\r
EFIAPI\r
EFI_STATUS Status;\r
EFI_HANDLE NewHandle;\r
VS_DEV *Dev;\r
- VOID *HobList;\r
+ EFI_PEI_HOB_POINTERS GuidHob;\r
VARIABLE_HEADER *NextVariable;\r
VARIABLE_STORE_HEADER *VariableStoreHeader;\r
EFI_FLASH_MAP_FS_ENTRY_DATA *FlashMapEntryData;\r
EFI_FLASH_SUBAREA_ENTRY VariableStoreEntry;\r
- VOID *Buffer;\r
UINT64 BaseAddress;\r
UINT64 Length;\r
EFI_GCD_MEMORY_SPACE_DESCRIPTOR GcdDescriptor;\r
return Status;\r
}\r
\r
- Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, &HobList);\r
-\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
- \r
- for (FlashMapEntryData = NULL; ;) {\r
- Buffer = GetNextGuidHob (&gEfiFlashMapHobGuid, &HobList);\r
-\r
- FlashMapEntryData = (EFI_FLASH_MAP_FS_ENTRY_DATA *) Buffer;\r
-\r
- //\r
- // Get the variable store area\r
- //\r
+ GuidHob.Raw = GetHobList ();\r
+ FlashMapEntryData = NULL;\r
+ while ((GuidHob.Raw = GetNextGuidHob (&gEfiFlashMapHobGuid, GuidHob.Raw)) != NULL) {\r
+ FlashMapEntryData = (EFI_FLASH_MAP_FS_ENTRY_DATA *) GET_GUID_HOB_DATA (GuidHob.Guid);\r
if (FlashMapEntryData->AreaType == EFI_FLASH_AREA_EFI_VARIABLES) {\r
break;\r
}\r
+ GuidHob.Raw = GET_NEXT_HOB (GuidHob); \r
}\r
\r
- if (EFI_ERROR (Status) || FlashMapEntryData == NULL) {\r
+ if (FlashMapEntryData == NULL) {\r
+ DEBUG ((EFI_D_ERROR, "FSVariable: Could not find flash area for variable!\n"));\r
Status = EFI_NOT_FOUND;\r
return Status;\r
}\r
-\r
- VariableStoreEntry = FlashMapEntryData->Entries[0];\r
+ \r
+ CopyMem(\r
+ (VOID*)&VariableStoreEntry,\r
+ (VOID*)&FlashMapEntryData->Entries[0],\r
+ sizeof(EFI_FLASH_SUBAREA_ENTRY)\r
+ );\r
\r
//\r
// Mark the variable storage region of the FLASH as RUNTIME\r
SystemTable->RuntimeServices->GetNextVariableName = GetNextVariableName;\r
SystemTable->RuntimeServices->SetVariable = SetVariable;\r
\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
SystemTable->RuntimeServices->QueryVariableInfo = QueryVariableInfo;\r
-#endif\r
\r
//\r
// Now install the Variable Runtime Architectural Protocol on a new handle\r
\r
\r
\r
-STATIC\r
VOID\r
EFIAPI\r
-OnVirtualAddressChange (\r
+OnVirtualAddressChangeFsv (\r
IN EFI_EVENT Event,\r
IN VOID *Context\r
)\r