MdePkg/Baseib: Filter/trace MSR access for IA32/X64
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3246 Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Acked-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
/** @file
|
||||
AsmWriteMsr64 function
|
||||
|
||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
|
||||
|
||||
#include <Library/RegisterFilterLib.h>
|
||||
|
||||
/**
|
||||
Writes a 64-bit value to a Machine Specific Register(MSR), and returns the
|
||||
@@ -33,11 +33,19 @@ AsmWriteMsr64 (
|
||||
IN UINT64 Value
|
||||
)
|
||||
{
|
||||
_asm {
|
||||
mov edx, dword ptr [Value + 4]
|
||||
mov eax, dword ptr [Value + 0]
|
||||
mov ecx, Index
|
||||
wrmsr
|
||||
BOOLEAN Flag;
|
||||
|
||||
Flag = FilterBeforeMsrWrite (Index, &Value);
|
||||
if (Flag) {
|
||||
_asm {
|
||||
mov edx, dword ptr [Value + 4]
|
||||
mov eax, dword ptr [Value + 0]
|
||||
mov ecx, Index
|
||||
wrmsr
|
||||
}
|
||||
}
|
||||
FilterAfterMsrWrite (Index, &Value);
|
||||
|
||||
return Value;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user