BOOLEAN UseLeastAlignment;\r
\r
UseLeastAlignment = TRUE;\r
+ SubLength = 0;\r
\r
//\r
// Calculate the alignment of the base address.\r
*SubLeft = 0;\r
*SubRight = 0;\r
LeastSubtractiveMtrrNumber = 0;\r
+ BaseAlignment = 0;\r
\r
//\r
// Get the optimal left subtraction solution.\r
\r
MTRR_LIB_ASSERT_ALIGNED (BaseAddress, Length);\r
if (Type == CacheInvalid) {\r
+ ASSERT (Ranges != NULL);\r
for (Index = 0; Index < RangeCount; Index++) {\r
if (Ranges[Index].BaseAddress <= BaseAddress && BaseAddress < Ranges[Index].BaseAddress + Ranges[Index].Length) {\r
\r
UINT32 SubtractiveRight;\r
BOOLEAN UseLeastAlignment;\r
\r
+ Alignment = 0;\r
+\r
MtrrNumber = MtrrLibGetMtrrNumber (Ranges, RangeCount, VariableMtrr, *VariableMtrrCount,\r
BaseAddress, Length, Type, Alignment0, &SubtractiveLeft, &SubtractiveRight);\r
\r
ASSERT (OriginalVariableMtrrCount - FreeVariableMtrrCount <= FirmwareVariableMtrrCount);\r
\r
//\r
- // Move MTRRs after the FirmwraeVariableMtrrCount position to beginning\r
+ // Move MTRRs after the FirmwareVariableMtrrCount position to beginning\r
//\r
- WorkingIndex = FirmwareVariableMtrrCount;\r
- for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {\r
- if (!OriginalVariableMtrr[Index].Valid) {\r
- //\r
- // Found an empty MTRR in WorkingIndex position\r
- //\r
- for (; WorkingIndex < OriginalVariableMtrrCount; WorkingIndex++) {\r
- if (OriginalVariableMtrr[WorkingIndex].Valid) {\r
- break;\r
+ if (FirmwareVariableMtrrCount < OriginalVariableMtrrCount) {\r
+ WorkingIndex = FirmwareVariableMtrrCount;\r
+ for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {\r
+ if (!OriginalVariableMtrr[Index].Valid) {\r
+ //\r
+ // Found an empty MTRR in WorkingIndex position\r
+ //\r
+ for (; WorkingIndex < OriginalVariableMtrrCount; WorkingIndex++) {\r
+ if (OriginalVariableMtrr[WorkingIndex].Valid) {\r
+ break;\r
+ }\r
}\r
- }\r
\r
- if (WorkingIndex != OriginalVariableMtrrCount) {\r
- CopyMem (&OriginalVariableMtrr[Index], &OriginalVariableMtrr[WorkingIndex], sizeof (VARIABLE_MTRR));\r
- VariableSettingModified[Index] = TRUE;\r
- VariableSettingModified[WorkingIndex] = TRUE;\r
- OriginalVariableMtrr[WorkingIndex].Valid = FALSE;\r
+ if (WorkingIndex != OriginalVariableMtrrCount) {\r
+ CopyMem (&OriginalVariableMtrr[Index], &OriginalVariableMtrr[WorkingIndex], sizeof (VARIABLE_MTRR));\r
+ VariableSettingModified[Index] = TRUE;\r
+ VariableSettingModified[WorkingIndex] = TRUE;\r
+ OriginalVariableMtrr[WorkingIndex].Valid = FALSE;\r
+ }\r
}\r
}\r
}\r