]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg/MtrrLib: Fix GCC build failure
authorRuiyu Ni <ruiyu.ni@intel.com>
Fri, 31 Mar 2017 14:04:17 +0000 (22:04 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Fri, 31 Mar 2017 14:05:21 +0000 (22:05 +0800)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
UefiCpuPkg/Library/MtrrLib/MtrrLib.c

index 524f21e84299830a4c3464bed1d6a2a87925ee9a..8e8427291f9c5ccef0fe9d8724ae11e69e60ee38 100644 (file)
@@ -836,7 +836,7 @@ MtrrLibGetMtrrNumber (
   IN UINT64                 Alignment0,\r
   OUT UINT32                *SubLeft, // subtractive from BaseAddress to get more aligned address, to save MTRR\r
   OUT UINT32                *SubRight // subtractive from BaseAddress + Length, to save MTRR\r
-)\r
+  )\r
 {\r
   UINT64  Alignment;\r
   UINT32  LeastLeftMtrrNumber;\r
@@ -859,6 +859,8 @@ MtrrLibGetMtrrNumber (
   // Get the optimal left subtraction solution.\r
   //\r
   if (BaseAddress != 0) {\r
+    SubtractiveBaseAddress = 0;\r
+    SubtractiveLength      = 0;\r
     //\r
     // Get the MTRR number needed without left subtraction.\r
     //\r
@@ -1371,6 +1373,8 @@ MtrrLibSetMemoryType (
   UINT32                           EndIndex;\r
   UINT32                           DeltaCount;\r
 \r
+  LengthRight = 0;\r
+  LengthLeft  = 0;\r
   Limit = BaseAddress + Length;\r
   StartIndex = *Count;\r
   EndIndex = *Count;\r
@@ -1847,6 +1851,8 @@ MtrrSetMemoryAttributeWorker (
   if (((BaseAddress & ~MtrrValidAddressMask) != 0) || (Length & ~MtrrValidAddressMask) != 0) {\r
     return RETURN_UNSUPPORTED;\r
   }\r
+  OriginalVariableMtrrCount = 0;\r
+  VariableSettings          = NULL;\r
 \r
   ZeroMem (&WorkingFixedSettings, sizeof (WorkingFixedSettings));\r
   for (Index = 0; Index < MTRR_NUMBER_OF_FIXED_MTRR; Index++) {\r
@@ -2048,7 +2054,7 @@ MtrrSetMemoryAttributeWorker (
     if (VariableSettingModified[Index]) {\r
       if (OriginalVariableMtrr[Index].Valid) {\r
         VariableSettings->Mtrr[Index].Base = (OriginalVariableMtrr[Index].BaseAddress & MtrrValidAddressMask) | (UINT8) OriginalVariableMtrr[Index].Type;\r
-        VariableSettings->Mtrr[Index].Mask = (~(OriginalVariableMtrr[Index].Length - 1)) & MtrrValidAddressMask | BIT11;\r
+        VariableSettings->Mtrr[Index].Mask = ((~(OriginalVariableMtrr[Index].Length - 1)) & MtrrValidAddressMask) | BIT11;\r
       } else {\r
         VariableSettings->Mtrr[Index].Base = 0;\r
         VariableSettings->Mtrr[Index].Mask = 0;\r
@@ -2081,6 +2087,8 @@ Done:
 \r
   //\r
   // Write variable MTRRs\r
+  // When only fixed MTRRs were changed, below loop doesn't run\r
+  // because OriginalVariableMtrrCount equals to 0.\r
   //\r
   for (Index = 0; Index < OriginalVariableMtrrCount; Index++) {\r
     if (VariableSettingModified[Index]) {\r
@@ -2102,7 +2110,7 @@ Done:
     MtrrLibPostMtrrChange (&MtrrContext);\r
   }\r
 \r
-  return Status;\r
+  return RETURN_SUCCESS;\r
 }\r
 \r
 /**\r