mirror of https://github.com/acidanthera/audk.git
46 lines
877 B
C
46 lines
877 B
C
/** @file
|
|
CpuBreakpoint function.
|
|
|
|
Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
/**
|
|
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)
|
|
|
|
/**
|
|
Write data to MSR.
|
|
|
|
@param Index The register index of MSR.
|
|
@param Value Data wants to be written.
|
|
|
|
@return Value written to MSR.
|
|
|
|
**/
|
|
UINT64
|
|
EFIAPI
|
|
AsmWriteMsr64 (
|
|
IN UINT32 Index,
|
|
IN UINT64 Value
|
|
)
|
|
{
|
|
BOOLEAN Flag;
|
|
|
|
Flag = FilterBeforeMsrWrite (Index, &Value);
|
|
if (Flag) {
|
|
__writemsr (Index, Value);
|
|
}
|
|
FilterAfterMsrWrite (Index, &Value);
|
|
|
|
return Value;
|
|
}
|
|
|