\r
--*/\r
{\r
- UINT16 *Ptr;\r
- UINT16 HeaderLength;\r
- UINT16 Checksum;\r
-\r
//\r
// Verify the header revision, header signature, length\r
// Length of FvBlock cannot be 2**64-1\r
//\r
// Verify the header checksum\r
//\r
- HeaderLength = (UINT16) (FwVolHeader->HeaderLength / 2);\r
- Ptr = (UINT16 *) FwVolHeader;\r
- Checksum = 0;\r
- while (HeaderLength > 0) {\r
- Checksum = (UINT16)(Checksum + (*Ptr));\r
- HeaderLength--;\r
- Ptr++;\r
- }\r
-\r
- if (Checksum != 0) {\r
+ if (CalculateCheckSum16 ((UINT16 *) FwVolHeader, FwVolHeader->HeaderLength) != 0) {\r
return EFI_NOT_FOUND;\r
}\r
\r
- //\r
- // PI specification defines the name guid of FV exists in extension header.\r
- //\r
- if (FwVolHeader->ExtHeaderOffset == 0) {\r
- return EFI_NOT_FOUND;\r
- }\r
- \r
return EFI_SUCCESS;\r
}\r
\r
UINTN NumOfBlocks;\r
EFI_PEI_HOB_POINTERS FvHob;\r
\r
- //\r
+ //\r
// Get the DXE services table\r
//\r
DxeServices = gDS;\r
EFI_FIRMWARE_FILE_SYSTEM2_GUID,\r
FixedPcdGet32 (PcdWinNtFlashFvRecoverySize),\r
EFI_FVH_SIGNATURE,\r
- EFI_FVB2_READ_ENABLED_CAP |\r
+ EFI_FVB2_MEMORY_MAPPED | \r
+ EFI_FVB2_READ_ENABLED_CAP |\r
EFI_FVB2_READ_STATUS |\r
EFI_FVB2_WRITE_ENABLED_CAP |\r
EFI_FVB2_WRITE_STATUS |\r
- EFI_FVB2_ERASE_POLARITY,\r
+ EFI_FVB2_ERASE_POLARITY |\r
+ EFI_FVB2_ALIGNMENT_16,\r
sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),\r
- 0, // CheckSum\r
- 0, // ExtHeaderOffset\r
+ 0xE947, // CheckSum\r
+ 0, // ExtHeaderOffset\r
{\r
0,\r
}, // Reserved[1]\r
FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) +\r
FixedPcdGet32 (PcdWinNtFlashNvStorageEventLogSize),\r
EFI_FVH_SIGNATURE,\r
- EFI_FVB2_READ_ENABLED_CAP |\r
+ EFI_FVB2_MEMORY_MAPPED | \r
+ EFI_FVB2_READ_ENABLED_CAP |\r
EFI_FVB2_READ_STATUS |\r
EFI_FVB2_WRITE_ENABLED_CAP |\r
EFI_FVB2_WRITE_STATUS |\r
- EFI_FVB2_ERASE_POLARITY,\r
+ EFI_FVB2_ERASE_POLARITY |\r
+ EFI_FVB2_ALIGNMENT_16,\r
sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),\r
- 0, // CheckSum\r
- 0, // ExtHeaderOffset\r
+ 0xFBFF, // CheckSum\r
+ 0, // ExtHeaderOffset\r
{\r
0,\r
}, // Reserved[1]\r