コード例 #1
0
ファイル: vmm.cpp プロジェクト: wjcsharp/HyperPlatform
// XSETBV. It is executed at the time of system resuming
_Use_decl_annotations_ static void VmmpHandleXsetbv(
    GuestContext *guest_context) {
  HYPERPLATFORM_PERFORMANCE_MEASURE_THIS_SCOPE();
  ULARGE_INTEGER value = {};
  value.LowPart = static_cast<ULONG>(guest_context->gp_regs->ax);
  value.HighPart = static_cast<ULONG>(guest_context->gp_regs->dx);
  _xsetbv(static_cast<ULONG>(guest_context->gp_regs->cx), value.QuadPart);

  VmmpAdjustGuestInstructionPointer(guest_context->ip);
}
コード例 #2
0
ファイル: shvvmxhv.c プロジェクト: AmesianX/SimpleVisor
VOID
ShvVmxHandleXsetbv (
    _In_ PSHV_VP_STATE VpState
    )
{
    //
    // Simply issue the XSETBV instruction on the native logical processor.
    //
    _xsetbv((ULONG)VpState->VpRegs->Rcx,
            VpState->VpRegs->Rdx << 32 |
            VpState->VpRegs->Rax);
}
コード例 #3
0
ファイル: xgetsetbv.c プロジェクト: MaxKellermann/gcc
unsigned int
xgetsetbv (void)
{
 _xsetbv (0, 0);
  return _xgetbv (0);
}