Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Context data for an Arm64 exit caused by an intercepted register access.
Note
This exit reason and its context structure apply to Arm64 partitions only.
Syntax
//
// Context data for an exit caused by an intercepted register access
// (WHvMessageTypeRegisterIntercept)
//
//
// Define register intercept message structure.
//
typedef union WHV_REGISTER_ACCESS_INFO
{
WHV_REGISTER_VALUE SourceValue;
WHV_REGISTER_NAME DestinationRegister;
} WHV_REGISTER_ACCESS_INFO;
typedef struct WHV_REGISTER_CONTEXT
{
WHV_INTERCEPT_MESSAGE_HEADER Header;
struct
{
UINT8 IsMemoryOp:1;
UINT8 Reserved:7;
};
UINT8 Reserved8;
UINT16 Reserved16;
WHV_REGISTER_NAME RegisterName;
WHV_REGISTER_ACCESS_INFO AccessInfo;
} WHV_REGISTER_CONTEXT;
Remarks
Information about an exit caused by the virtual processor accessing an intercepted system register is provided in the WHV_REGISTER_CONTEXT structure. The exit is reported with the WHvMessageTypeRegisterIntercept exit reason.
The exit is generated when the guest writes one of the synthetic guest-crash registers — WHvRegisterGuestCrashP0 through WHvRegisterGuestCrashP4, or WHvRegisterGuestCrashCtl — which a guest can use to report a crash to the virtualization stack.
The Header member is a WHV_INTERCEPT_MESSAGE_HEADER, which reports the program counter (Pc) and saved processor state (Cpsr) at the time of the access, along with the access direction in WHV_INTERCEPT_MESSAGE_HEADER.InterceptAccessType (a WHV_MEMORY_ACCESS_TYPE value).
The RegisterName member is the WHV_REGISTER_NAME of the intercepted register. The AccessInfo member carries the value for a register write and identifies the target for a register read:
AccessInfo.SourceValueis aWHV_REGISTER_VALUEthat carries the value written for a register write.AccessInfo.DestinationRegisteris aWHV_REGISTER_NAMEthat identifies the target register for a register read.
The IsMemoryOp bit indicates whether the intercepted access is a memory operation.