MicrocodeEnd = (UINTN) (CpuMpData->MicrocodePatchAddress + CpuMpData->MicrocodePatchRegionSize);\r
MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *) (UINTN) CpuMpData->MicrocodePatchAddress;\r
\r
- //\r
- // Save an in-complete CheckSum32 from CheckSum Part1 for common parts.\r
- //\r
- if (MicrocodeEntryPoint->DataSize == 0) {\r
- InCompleteCheckSum32 = CalculateSum32 (\r
- (UINT32 *) MicrocodeEntryPoint,\r
- sizeof (CPU_MICROCODE_HEADER) + 2000\r
- );\r
- } else {\r
- InCompleteCheckSum32 = CalculateSum32 (\r
- (UINT32 *) MicrocodeEntryPoint,\r
- sizeof (CPU_MICROCODE_HEADER) + MicrocodeEntryPoint->DataSize\r
- );\r
- }\r
- InCompleteCheckSum32 -= MicrocodeEntryPoint->ProcessorSignature.Uint32;\r
- InCompleteCheckSum32 -= MicrocodeEntryPoint->ProcessorFlags;\r
- InCompleteCheckSum32 -= MicrocodeEntryPoint->Checksum;\r
-\r
do {\r
//\r
// Check if the microcode is for the Cpu and the version is newer\r
// and the update can be processed on the platform\r
//\r
CorrectMicrocode = FALSE;\r
+\r
+ //\r
+ // Save an in-complete CheckSum32 from CheckSum Part1 for common parts.\r
+ //\r
+ if (MicrocodeEntryPoint->DataSize == 0) {\r
+ InCompleteCheckSum32 = CalculateSum32 (\r
+ (UINT32 *) MicrocodeEntryPoint,\r
+ sizeof (CPU_MICROCODE_HEADER) + 2000\r
+ );\r
+ } else {\r
+ InCompleteCheckSum32 = CalculateSum32 (\r
+ (UINT32 *) MicrocodeEntryPoint,\r
+ sizeof (CPU_MICROCODE_HEADER) + MicrocodeEntryPoint->DataSize\r
+ );\r
+ }\r
+ InCompleteCheckSum32 -= MicrocodeEntryPoint->ProcessorSignature.Uint32;\r
+ InCompleteCheckSum32 -= MicrocodeEntryPoint->ProcessorFlags;\r
+ InCompleteCheckSum32 -= MicrocodeEntryPoint->Checksum;\r
+\r
if (MicrocodeEntryPoint->HeaderVersion == 0x1) {\r
//\r
// It is the microcode header. It is not the padding data between microcode patches\r