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,7 +1,7 @@
|
||||
/** @file
|
||||
CpuBreakpoint function.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
@@ -10,6 +10,8 @@
|
||||
Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.
|
||||
**/
|
||||
|
||||
#include <Library/RegisterFilterLib.h>
|
||||
|
||||
void __writemsr (unsigned long Register, unsigned __int64 Value);
|
||||
|
||||
#pragma intrinsic(__writemsr)
|
||||
@@ -30,7 +32,14 @@ AsmWriteMsr64 (
|
||||
IN UINT64 Value
|
||||
)
|
||||
{
|
||||
__writemsr (Index, Value);
|
||||
BOOLEAN Flag;
|
||||
|
||||
Flag = FilterBeforeMsrWrite (Index, &Value);
|
||||
if (Flag) {
|
||||
__writemsr (Index, Value);
|
||||
}
|
||||
FilterAfterMsrWrite (Index, &Value);
|
||||
|
||||
return Value;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user