]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/X64/ReadMsr64.c
MdePkg/Baseib: Filter/trace MSR access for IA32/X64
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / ReadMsr64.c
index 5ee7ca53f30037bc4fde26fc59dded250244cb9d..36a349432cab26b8bc04fc6996142a9f3fec22eb 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   CpuBreakpoint function.\r
 \r
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -10,6 +10,8 @@
   Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.\r
 **/\r
 \r
+#include <Library/RegisterFilterLib.h>\r
+\r
 unsigned __int64 __readmsr (int register);\r
 \r
 #pragma intrinsic(__readmsr)\r
@@ -28,6 +30,15 @@ AsmReadMsr64 (
   IN UINT32  Index\r
   )\r
 {\r
-  return __readmsr (Index);\r
+  UINT64                            Value;\r
+  BOOLEAN                           Flag;\r
+\r
+  Flag = FilterBeforeMsrRead (Index, &Value);\r
+  if (Flag) {\r
+    Value = __readmsr (Index);\r
+  }\r
+  FilterAfterMsrRead (Index, &Value);\r
+\r
+  return Value;\r
 }\r
 \r