]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Library/BaseLib/X64/WriteMsr64.c
MdePkg/Baseib: Filter/trace MSR access for IA32/X64
[mirror_edk2.git] / MdePkg / Library / BaseLib / X64 / WriteMsr64.c
CommitLineData
f1baef62 1/** @file\r
2 CpuBreakpoint function.\r
3\r
dc4d4230 4 Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>\r
9344f092 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
f1baef62 6\r
7**/\r
8\r
42eedea9 9/**\r
10 Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics.\r
11**/\r
7e43ed89 12\r
dc4d4230
DB
13#include <Library/RegisterFilterLib.h>\r
14\r
f1baef62 15void __writemsr (unsigned long Register, unsigned __int64 Value);\r
16\r
17#pragma intrinsic(__writemsr)\r
18\r
42eedea9 19/**\r
20 Write data to MSR.\r
21\r
127010dd 22 @param Index The register index of MSR.\r
42eedea9 23 @param Value Data wants to be written.\r
24\r
25 @return Value written to MSR.\r
26\r
27**/\r
f1baef62 28UINT64\r
29EFIAPI\r
30AsmWriteMsr64 (\r
31 IN UINT32 Index,\r
32 IN UINT64 Value\r
33 )\r
34{\r
dc4d4230
DB
35 BOOLEAN Flag;\r
36\r
37 Flag = FilterBeforeMsrWrite (Index, &Value);\r
38 if (Flag) {\r
39 __writemsr (Index, Value);\r
40 }\r
41 FilterAfterMsrWrite (Index, &Value);\r
42\r
f1baef62 43 return Value;\r
44}\r
45\r