You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
622 B
24 lines
622 B
4 years ago
|
#include "vmxexit_handler.h"
|
||
|
|
||
|
auto exit_handler(hv::pguest_registers regs) -> void
|
||
|
{
|
||
|
u64 exit_reason;
|
||
|
__vmx_vmread(VMCS_EXIT_REASON, &exit_reason);
|
||
|
|
||
|
switch (exit_reason)
|
||
|
{
|
||
|
case VMX_EXIT_REASON_EXECUTE_CPUID:
|
||
|
case VMX_EXIT_REASON_EXECUTE_INVLPG:
|
||
|
case VMX_EXIT_REASON_EXECUTE_XSETBV:
|
||
|
case VMX_EXIT_REASON_EXECUTE_HLT:
|
||
|
case VMX_EXIT_REASON_EXECUTE_VMCALL:
|
||
|
case VMX_EXIT_REASON_EXECUTE_VMREAD:
|
||
|
case VMX_EXIT_REASON_EXECUTE_VMWRITE:
|
||
|
case VMX_EXIT_REASON_EXECUTE_VMPTRLD:
|
||
|
case VMX_EXIT_REASON_EXECUTE_VMPTRST:
|
||
|
case VMX_EXIT_REASON_EXECUTE_VMCLEAR:
|
||
|
case VMX_EXIT_REASON_EXECUTE_RDTSC:
|
||
|
default:
|
||
|
__vmx_off();
|
||
|
}
|
||
|
}
|