diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/BaseLib.h index 4ffddfd5f6..3cb2cdb154 100644 --- a/MdePkg/Include/Library/BaseLib.h +++ b/MdePkg/Include/Library/BaseLib.h @@ -5212,6 +5212,34 @@ AsmCpuidEx ( ); +/** + Set CD bit and clear NW bit of CR0 followed by a WBINVD. + + Disables the caches by setting the CD bit of CR0 to 1, clearing the NW bit of CR0 to 0, + and executing a WBINVD instruction. This function is only available on IA-32 and x64. + +**/ +VOID +EFIAPI +AsmDisableCache ( + VOID + ); + + +/** + Perform a WBINVD and clear both the CD and NW bits of CR0. + + Enables the caches by executing a WBINVD instruction and then clear both the CD and NW + bits of CR0 to 0. This function is only available on IA-32 and x64. + +**/ +VOID +EFIAPI +AsmEnableCache ( + VOID + ); + + /** Returns the lower 32-bits of a Machine Specific Register(MSR). diff --git a/MdePkg/Library/BaseLib/Ia32/DisableCache.c b/MdePkg/Library/BaseLib/Ia32/DisableCache.c index d2d028a93d..4ee3b88fdc 100644 --- a/MdePkg/Library/BaseLib/Ia32/DisableCache.c +++ b/MdePkg/Library/BaseLib/Ia32/DisableCache.c @@ -13,10 +13,10 @@ **/ /** - Disables caches. + Set CD bit and clear NW bit of CR0 followed by a WBINVD. - Set the CD bit of CR0 to 1, clear the NW bit of CR0 to 0, and flush all caches with a - WBINVD instruction. + Disables the caches by setting the CD bit of CR0 to 1, clearing the NW bit of CR0 to 0, + and executing a WBINVD instruction. This function is only available on IA-32 and x64. **/ VOID diff --git a/MdePkg/Library/BaseLib/Ia32/EnableCache.c b/MdePkg/Library/BaseLib/Ia32/EnableCache.c index 59e2b43213..dab89039f0 100644 --- a/MdePkg/Library/BaseLib/Ia32/EnableCache.c +++ b/MdePkg/Library/BaseLib/Ia32/EnableCache.c @@ -13,10 +13,10 @@ **/ /** - Enabled caches. + Perform a WBINVD and clear both the CD and NW bits of CR0. - Flush all caches with a WBINVD instruction, clear the CD bit of CR0 to 0, and clear - the NW bit of CR0 to 0 + Enables the caches by executing a WBINVD instruction and then clear both the CD and NW + bits of CR0 to 0. This function is only available on IA-32 and x64. **/ VOID