\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