**/\r
EFI_STATUS\r
SearchForExactMtrr (\r
- IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
- IN UINT64 MemoryLength,\r
- IN UINT64 ValidMtrrAddressMask,\r
- OUT UINT32 *UsedMsrNum,\r
- OUT EFI_MEMORY_CACHE_TYPE *MemoryCacheType\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
+ IN UINT64 MemoryLength,\r
+ IN UINT64 ValidMtrrAddressMask,\r
+ OUT UINT32 *UsedMsrNum,\r
+ OUT EFI_MEMORY_CACHE_TYPE *MemoryCacheType\r
);\r
\r
/**\r
**/\r
BOOLEAN\r
IsDefaultType (\r
- IN EFI_MEMORY_CACHE_TYPE MemoryCacheType\r
+ IN EFI_MEMORY_CACHE_TYPE MemoryCacheType\r
);\r
\r
/**\r
**/\r
UINT32\r
CheckMtrrAlignment (\r
- IN UINT64 BaseAddress,\r
- IN UINT64 Size\r
+ IN UINT64 BaseAddress,\r
+ IN UINT64 Size\r
);\r
\r
typedef struct {\r
UINT32 Length;\r
} EFI_FIXED_MTRR;\r
\r
-EFI_FIXED_MTRR mFixedMtrrTable[] = {\r
- { EFI_MSR_IA32_MTRR_FIX64K_00000, 0, 0x10000},\r
- { EFI_MSR_IA32_MTRR_FIX16K_80000, 0x80000, 0x4000},\r
- { EFI_MSR_IA32_MTRR_FIX16K_A0000, 0xA0000, 0x4000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_C0000, 0xC0000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_C8000, 0xC8000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_D0000, 0xD0000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_D8000, 0xD8000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_E0000, 0xE0000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_E8000, 0xE8000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_F0000, 0xF0000, 0x1000},\r
- { EFI_MSR_IA32_MTRR_FIX4K_F8000, 0xF8000, 0x1000}\r
+EFI_FIXED_MTRR mFixedMtrrTable[] = {\r
+ { EFI_MSR_IA32_MTRR_FIX64K_00000, 0, 0x10000 },\r
+ { EFI_MSR_IA32_MTRR_FIX16K_80000, 0x80000, 0x4000 },\r
+ { EFI_MSR_IA32_MTRR_FIX16K_A0000, 0xA0000, 0x4000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_C0000, 0xC0000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_C8000, 0xC8000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_D0000, 0xD0000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_D8000, 0xD8000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_E0000, 0xE0000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_E8000, 0xE8000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_F0000, 0xF0000, 0x1000 },\r
+ { EFI_MSR_IA32_MTRR_FIX4K_F8000, 0xF8000, 0x1000 }\r
};\r
\r
/**\r
**/\r
INT8\r
CheckDirection (\r
- IN UINT64 Input\r
+ IN UINT64 Input\r
)\r
{\r
return 0;\r
**/\r
VOID\r
EfiDisableCacheMtrr (\r
- OUT UINT64 *OldMtrr\r
+ OUT UINT64 *OldMtrr\r
)\r
{\r
UINT64 TempQword;\r
//\r
// Disable Cache MTRR\r
//\r
- *OldMtrr = AsmReadMsr64(EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE);\r
+ *OldMtrr = AsmReadMsr64 (EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE);\r
TempQword = (*OldMtrr) & ~B_EFI_MSR_GLOBAL_MTRR_ENABLE & ~B_EFI_MSR_FIXED_MTRR_ENABLE;\r
- AsmWriteMsr64(EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE, TempQword);\r
+ AsmWriteMsr64 (EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE, TempQword);\r
AsmDisableCache ();\r
}\r
\r
**/\r
VOID\r
EfiRecoverCacheMtrr (\r
- IN BOOLEAN EnableMtrr,\r
- IN UINT64 OldMtrr\r
+ IN BOOLEAN EnableMtrr,\r
+ IN UINT64 OldMtrr\r
)\r
{\r
UINT64 TempQword;\r
// Enable Cache MTRR\r
//\r
if (EnableMtrr) {\r
- TempQword = AsmReadMsr64(EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE);\r
+ TempQword = AsmReadMsr64 (EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE);\r
TempQword |= (UINT64)(B_EFI_MSR_GLOBAL_MTRR_ENABLE | B_EFI_MSR_FIXED_MTRR_ENABLE);\r
} else {\r
TempQword = OldMtrr;\r
**/\r
VOID\r
EfiProgramMtrr (\r
- IN UINT32 MtrrNumber,\r
- IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
- IN UINT64 MemoryLength,\r
- IN EFI_MEMORY_CACHE_TYPE MemoryCacheType,\r
- IN UINT64 ValidMtrrAddressMask\r
+ IN UINT32 MtrrNumber,\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
+ IN UINT64 MemoryLength,\r
+ IN EFI_MEMORY_CACHE_TYPE MemoryCacheType,\r
+ IN UINT64 ValidMtrrAddressMask\r
)\r
{\r
- UINT64 TempQword;\r
- UINT64 OldMtrr;\r
+ UINT64 TempQword;\r
+ UINT64 OldMtrr;\r
\r
if (MemoryLength == 0) {\r
return;\r
**/\r
UINT64\r
Power2MaxMemory (\r
- IN UINT64 MemoryAddress,\r
- IN UINT64 MemoryLength\r
+ IN UINT64 MemoryAddress,\r
+ IN UINT64 MemoryLength\r
)\r
{\r
- UINT64 Result;\r
+ UINT64 Result;\r
\r
if (MemoryLength == 0) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// Compute initial power of 2 size to return\r
//\r
- Result = GetPowerOfTwo64(MemoryLength);\r
+ Result = GetPowerOfTwo64 (MemoryLength);\r
\r
//\r
// Special case base of 0 as all ranges are valid\r
**/\r
UINT32\r
CheckMtrrAlignment (\r
- IN UINT64 BaseAddress,\r
- IN UINT64 Size\r
+ IN UINT64 BaseAddress,\r
+ IN UINT64 Size\r
)\r
{\r
- UINT32 ShiftedBase;\r
- UINT32 ShiftedSize;\r
+ UINT32 ShiftedBase;\r
+ UINT32 ShiftedSize;\r
\r
//\r
// Shift base and size right 12 bits to allow for larger memory sizes. The\r
// MTRRs do not use the first 12 bits so this is safe for now. Only supports\r
// up to 52 bits of physical address space.\r
//\r
- ShiftedBase = (UINT32) RShiftU64 (BaseAddress, 12);\r
- ShiftedSize = (UINT32) RShiftU64 (Size, 12);\r
+ ShiftedBase = (UINT32)RShiftU64 (BaseAddress, 12);\r
+ ShiftedSize = (UINT32)RShiftU64 (Size, 12);\r
\r
//\r
// Return the results to the caller of the MOD\r
**/\r
EFI_STATUS\r
ProgramFixedMtrr (\r
- IN EFI_MEMORY_CACHE_TYPE MemoryCacheType,\r
- IN UINT64 *Base,\r
- IN UINT64 *Len\r
+ IN EFI_MEMORY_CACHE_TYPE MemoryCacheType,\r
+ IN UINT64 *Base,\r
+ IN UINT64 *Len\r
)\r
{\r
- UINT32 MsrNum;\r
- UINT32 ByteShift;\r
- UINT64 TempQword;\r
- UINT64 OrMask;\r
- UINT64 ClearMask;\r
+ UINT32 MsrNum;\r
+ UINT32 ByteShift;\r
+ UINT64 TempQword;\r
+ UINT64 OrMask;\r
+ UINT64 ClearMask;\r
\r
TempQword = 0;\r
- OrMask = 0;\r
+ OrMask = 0;\r
ClearMask = 0;\r
\r
for (MsrNum = 0; MsrNum < V_EFI_FIXED_MTRR_NUMBER; MsrNum++) {\r
if ((*Base >= mFixedMtrrTable[MsrNum].BaseAddress) &&\r
- (*Base < (mFixedMtrrTable[MsrNum].BaseAddress + 8 * mFixedMtrrTable[MsrNum].Length))) {\r
+ (*Base < (mFixedMtrrTable[MsrNum].BaseAddress + 8 * mFixedMtrrTable[MsrNum].Length)))\r
+ {\r
break;\r
}\r
}\r
+\r
if (MsrNum == V_EFI_FIXED_MTRR_NUMBER ) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// We found the fixed MTRR to be programmed\r
//\r
- for (ByteShift=0; ByteShift < 8; ByteShift++) {\r
+ for (ByteShift = 0; ByteShift < 8; ByteShift++) {\r
if ( *Base == (mFixedMtrrTable[MsrNum].BaseAddress + ByteShift * mFixedMtrrTable[MsrNum].Length)) {\r
break;\r
}\r
}\r
+\r
if (ByteShift == 8 ) {\r
return EFI_DEVICE_ERROR;\r
}\r
- for (; ((ByteShift<8) && (*Len >= mFixedMtrrTable[MsrNum].Length));ByteShift++) {\r
- OrMask |= LShiftU64((UINT64) MemoryCacheType, (UINT32) (ByteShift* 8));\r
- ClearMask |= LShiftU64((UINT64) 0xFF, (UINT32) (ByteShift * 8));\r
- *Len -= mFixedMtrrTable[MsrNum].Length;\r
- *Base += mFixedMtrrTable[MsrNum].Length;\r
+\r
+ for ( ; ((ByteShift < 8) && (*Len >= mFixedMtrrTable[MsrNum].Length)); ByteShift++) {\r
+ OrMask |= LShiftU64 ((UINT64)MemoryCacheType, (UINT32)(ByteShift* 8));\r
+ ClearMask |= LShiftU64 ((UINT64)0xFF, (UINT32)(ByteShift * 8));\r
+ *Len -= mFixedMtrrTable[MsrNum].Length;\r
+ *Base += mFixedMtrrTable[MsrNum].Length;\r
}\r
+\r
TempQword = (AsmReadMsr64 (mFixedMtrrTable[MsrNum].Msr) & (~ClearMask)) | OrMask;\r
AsmWriteMsr64 (mFixedMtrrTable[MsrNum].Msr, TempQword);\r
\r
**/\r
BOOLEAN\r
CheckMtrrOverlap (\r
- IN EFI_PHYSICAL_ADDRESS Start,\r
- IN EFI_PHYSICAL_ADDRESS End\r
+ IN EFI_PHYSICAL_ADDRESS Start,\r
+ IN EFI_PHYSICAL_ADDRESS End\r
)\r
{\r
return FALSE;\r
EFI_STATUS\r
EFIAPI\r
SetCacheAttributes (\r
- IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
- IN UINT64 MemoryLength,\r
- IN EFI_MEMORY_CACHE_TYPE MemoryCacheType\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
+ IN UINT64 MemoryLength,\r
+ IN EFI_MEMORY_CACHE_TYPE MemoryCacheType\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT32 MsrNum, MsrNumEnd;\r
- UINT64 TempQword;\r
- UINT32 LastVariableMtrrForBios;\r
- UINT64 OldMtrr;\r
- UINT32 UsedMsrNum;\r
- EFI_MEMORY_CACHE_TYPE UsedMemoryCacheType;\r
- UINT64 ValidMtrrAddressMask;\r
- UINT32 Cpuid_RegEax;\r
+ EFI_STATUS Status;\r
+ UINT32 MsrNum, MsrNumEnd;\r
+ UINT64 TempQword;\r
+ UINT32 LastVariableMtrrForBios;\r
+ UINT64 OldMtrr;\r
+ UINT32 UsedMsrNum;\r
+ EFI_MEMORY_CACHE_TYPE UsedMemoryCacheType;\r
+ UINT64 ValidMtrrAddressMask;\r
+ UINT32 Cpuid_RegEax;\r
\r
AsmCpuid (CPUID_EXTENDED_FUNCTION, &Cpuid_RegEax, NULL, NULL, NULL);\r
if (Cpuid_RegEax >= CPUID_VIR_PHY_ADDRESS_SIZE) {\r
AsmCpuid (CPUID_VIR_PHY_ADDRESS_SIZE, &Cpuid_RegEax, NULL, NULL, NULL);\r
- ValidMtrrAddressMask = (LShiftU64((UINT64) 1, (Cpuid_RegEax & 0xFF)) - 1) & (~(UINT64)0x0FFF);\r
+ ValidMtrrAddressMask = (LShiftU64 ((UINT64)1, (Cpuid_RegEax & 0xFF)) - 1) & (~(UINT64)0x0FFF);\r
} else {\r
- ValidMtrrAddressMask = (LShiftU64((UINT64) 1, 36) - 1) & (~(UINT64)0x0FFF);\r
+ ValidMtrrAddressMask = (LShiftU64 ((UINT64)1, 36) - 1) & (~(UINT64)0x0FFF);\r
}\r
\r
//\r
// Check for invalid parameter\r
//\r
- if ((MemoryAddress & ~ValidMtrrAddressMask) != 0 || (MemoryLength & ~ValidMtrrAddressMask) != 0) {\r
+ if (((MemoryAddress & ~ValidMtrrAddressMask) != 0) || ((MemoryLength & ~ValidMtrrAddressMask) != 0)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
while ((MemoryLength > 0) && (Status == EFI_SUCCESS)) {\r
Status = ProgramFixedMtrr (MemoryCacheType, &MemoryAddress, &MemoryLength);\r
}\r
+\r
EfiRecoverCacheMtrr (TRUE, OldMtrr);\r
return Status;\r
}\r
//\r
// Search if the range attribute has been set before\r
//\r
- Status = SearchForExactMtrr(\r
- MemoryAddress,\r
- MemoryLength,\r
- ValidMtrrAddressMask,\r
- &UsedMsrNum,\r
- &UsedMemoryCacheType\r
- );\r
+ Status = SearchForExactMtrr (\r
+ MemoryAddress,\r
+ MemoryLength,\r
+ ValidMtrrAddressMask,\r
+ &UsedMsrNum,\r
+ &UsedMemoryCacheType\r
+ );\r
\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
//\r
// Compare if it has the same type as current setting\r
//\r
//\r
// Check if the set type is the same as Default Type\r
//\r
- if (IsDefaultType(MemoryCacheType)) {\r
+ if (IsDefaultType (MemoryCacheType)) {\r
//\r
// Clear the MTRR\r
//\r
- AsmWriteMsr64(UsedMsrNum, 0);\r
- AsmWriteMsr64(UsedMsrNum + 1, 0);\r
+ AsmWriteMsr64 (UsedMsrNum, 0);\r
+ AsmWriteMsr64 (UsedMsrNum + 1, 0);\r
\r
return EFI_SUCCESS;\r
} else {\r
//\r
// Modify the MTRR type\r
//\r
- EfiProgramMtrr(UsedMsrNum,\r
- MemoryAddress,\r
- MemoryLength,\r
- MemoryCacheType,\r
- ValidMtrrAddressMask\r
- );\r
+ EfiProgramMtrr (\r
+ UsedMsrNum,\r
+ MemoryAddress,\r
+ MemoryLength,\r
+ MemoryCacheType,\r
+ ValidMtrrAddressMask\r
+ );\r
return EFI_SUCCESS;\r
}\r
}\r
}\r
\r
-#if 0\r
+ #if 0\r
//\r
// @bug - Need to create memory map so that when checking for overlap we\r
// can determine if an overlap exists based on all caching requests.\r
//\r
// Don't waste a variable MTRR if the caching attrib is same as default in MTRR_DEF_TYPE\r
//\r
- if (MemoryCacheType == (AsmReadMsr64(EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE) & B_EFI_MSR_CACHE_MEMORY_TYPE)) {\r
+ if (MemoryCacheType == (AsmReadMsr64 (EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE) & B_EFI_MSR_CACHE_MEMORY_TYPE)) {\r
if (!CheckMtrrOverlap (MemoryAddress, MemoryAddress+MemoryLength-1)) {\r
return EFI_SUCCESS;\r
}\r
}\r
-#endif\r
+\r
+ #endif\r
\r
//\r
// Find first unused MTRR\r
//\r
- MsrNumEnd = EFI_MSR_CACHE_VARIABLE_MTRR_BASE + (2 * (UINT32)(AsmReadMsr64(EFI_MSR_IA32_MTRR_CAP) & B_EFI_MSR_IA32_MTRR_CAP_VARIABLE_SUPPORT));\r
- for (MsrNum = EFI_MSR_CACHE_VARIABLE_MTRR_BASE; MsrNum < MsrNumEnd; MsrNum +=2) {\r
- if ((AsmReadMsr64(MsrNum+1) & B_EFI_MSR_CACHE_MTRR_VALID) == 0 ) {\r
+ MsrNumEnd = EFI_MSR_CACHE_VARIABLE_MTRR_BASE + (2 * (UINT32)(AsmReadMsr64 (EFI_MSR_IA32_MTRR_CAP) & B_EFI_MSR_IA32_MTRR_CAP_VARIABLE_SUPPORT));\r
+ for (MsrNum = EFI_MSR_CACHE_VARIABLE_MTRR_BASE; MsrNum < MsrNumEnd; MsrNum += 2) {\r
+ if ((AsmReadMsr64 (MsrNum+1) & B_EFI_MSR_CACHE_MTRR_VALID) == 0 ) {\r
break;\r
}\r
}\r
//\r
TempQword = MemoryLength;\r
\r
- if (TempQword == Power2MaxMemory(MemoryAddress, TempQword)) {\r
- EfiProgramMtrr(MsrNum,\r
- MemoryAddress,\r
- MemoryLength,\r
- MemoryCacheType,\r
- ValidMtrrAddressMask\r
- );\r
-\r
+ if (TempQword == Power2MaxMemory (MemoryAddress, TempQword)) {\r
+ EfiProgramMtrr (\r
+ MsrNum,\r
+ MemoryAddress,\r
+ MemoryLength,\r
+ MemoryCacheType,\r
+ ValidMtrrAddressMask\r
+ );\r
} else {\r
//\r
// Fill in MTRRs with values. Direction can not be checked for this method\r
//\r
// Set next power of 2 region\r
//\r
- MemoryLength = Power2MaxMemory(MemoryAddress, TempQword);\r
- EfiProgramMtrr(MsrNum,\r
- MemoryAddress,\r
- MemoryLength,\r
- MemoryCacheType,\r
- ValidMtrrAddressMask\r
- );\r
+ MemoryLength = Power2MaxMemory (MemoryAddress, TempQword);\r
+ EfiProgramMtrr (\r
+ MsrNum,\r
+ MemoryAddress,\r
+ MemoryLength,\r
+ MemoryCacheType,\r
+ ValidMtrrAddressMask\r
+ );\r
MemoryAddress += MemoryLength;\r
- TempQword -= MemoryLength;\r
- MsrNum += 2;\r
+ TempQword -= MemoryLength;\r
+ MsrNum += 2;\r
} while (TempQword != 0);\r
}\r
\r
VOID\r
)\r
{\r
- UINT32 MsrNum, MsrNumEnd;\r
- UINT16 Index;\r
- UINT64 OldMtrr;\r
- UINT64 CacheType;\r
- BOOLEAN DisableCar;\r
- Index = 0;\r
+ UINT32 MsrNum, MsrNumEnd;\r
+ UINT16 Index;\r
+ UINT64 OldMtrr;\r
+ UINT64 CacheType;\r
+ BOOLEAN DisableCar;\r
+\r
+ Index = 0;\r
DisableCar = TRUE;\r
\r
//\r
//\r
// Set default cache type\r
//\r
- AsmWriteMsr64(EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE, CacheType);\r
+ AsmWriteMsr64 (EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE, CacheType);\r
\r
//\r
// Disable CAR\r
//\r
// Reset Variable MTRRs\r
//\r
- MsrNumEnd = EFI_MSR_CACHE_VARIABLE_MTRR_BASE + (2 * (UINT32)(AsmReadMsr64(EFI_MSR_IA32_MTRR_CAP) & B_EFI_MSR_IA32_MTRR_CAP_VARIABLE_SUPPORT));\r
+ MsrNumEnd = EFI_MSR_CACHE_VARIABLE_MTRR_BASE + (2 * (UINT32)(AsmReadMsr64 (EFI_MSR_IA32_MTRR_CAP) & B_EFI_MSR_IA32_MTRR_CAP_VARIABLE_SUPPORT));\r
for (MsrNum = EFI_MSR_CACHE_VARIABLE_MTRR_BASE; MsrNum < MsrNumEnd; MsrNum++) {\r
AsmWriteMsr64 (MsrNum, 0);\r
}\r
**/\r
EFI_STATUS\r
SearchForExactMtrr (\r
- IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
- IN UINT64 MemoryLength,\r
- IN UINT64 ValidMtrrAddressMask,\r
- OUT UINT32 *UsedMsrNum,\r
- OUT EFI_MEMORY_CACHE_TYPE *UsedMemoryCacheType\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAddress,\r
+ IN UINT64 MemoryLength,\r
+ IN UINT64 ValidMtrrAddressMask,\r
+ OUT UINT32 *UsedMsrNum,\r
+ OUT EFI_MEMORY_CACHE_TYPE *UsedMemoryCacheType\r
)\r
{\r
- UINT32 MsrNum, MsrNumEnd;\r
- UINT64 TempQword;\r
+ UINT32 MsrNum, MsrNumEnd;\r
+ UINT64 TempQword;\r
\r
if (MemoryLength == 0) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- MsrNumEnd = EFI_MSR_CACHE_VARIABLE_MTRR_BASE + (2 * (UINT32)(AsmReadMsr64(EFI_MSR_IA32_MTRR_CAP) & B_EFI_MSR_IA32_MTRR_CAP_VARIABLE_SUPPORT));\r
- for (MsrNum = EFI_MSR_CACHE_VARIABLE_MTRR_BASE; MsrNum < MsrNumEnd; MsrNum +=2) {\r
- TempQword = AsmReadMsr64(MsrNum+1);\r
+ MsrNumEnd = EFI_MSR_CACHE_VARIABLE_MTRR_BASE + (2 * (UINT32)(AsmReadMsr64 (EFI_MSR_IA32_MTRR_CAP) & B_EFI_MSR_IA32_MTRR_CAP_VARIABLE_SUPPORT));\r
+ for (MsrNum = EFI_MSR_CACHE_VARIABLE_MTRR_BASE; MsrNum < MsrNumEnd; MsrNum += 2) {\r
+ TempQword = AsmReadMsr64 (MsrNum+1);\r
if ((TempQword & B_EFI_MSR_CACHE_MTRR_VALID) == 0) {\r
continue;\r
}\r
}\r
\r
*UsedMemoryCacheType = (EFI_MEMORY_CACHE_TYPE)(TempQword & B_EFI_MSR_CACHE_MEMORY_TYPE);\r
- *UsedMsrNum = MsrNum;\r
+ *UsedMsrNum = MsrNum;\r
\r
return EFI_SUCCESS;\r
}\r
**/\r
BOOLEAN\r
IsDefaultType (\r
- IN EFI_MEMORY_CACHE_TYPE MemoryCacheType\r
+ IN EFI_MEMORY_CACHE_TYPE MemoryCacheType\r
)\r
{\r
- if ((AsmReadMsr64(EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE) & B_EFI_MSR_CACHE_MEMORY_TYPE) != MemoryCacheType) {\r
+ if ((AsmReadMsr64 (EFI_MSR_CACHE_IA32_MTRR_DEF_TYPE) & B_EFI_MSR_CACHE_MEMORY_TYPE) != MemoryCacheType) {\r
return FALSE;\r
}\r
\r
return TRUE;\r
}\r
-\r