#ifndef VMEVENTHANDLER_AMD_H_
#define VMEVENTHANDLER_AMD_H_
#include "vmmhelper.h"
#define VMEXIT_CR0_READ 0x00
#define VMEXIT_CR1_READ 0x01
#define VMEXIT_CR2_READ 0x02
#define VMEXIT_CR3_READ 0x03
#define VMEXIT_CR4_READ 0x04
#define VMEXIT_CR5_READ 0x05
#define VMEXIT_CR6_READ 0x06
#define VMEXIT_CR7_READ 0x07
#define VMEXIT_CR8_READ 0x08
#define VMEXIT_CR9_READ 0x09
#define VMEXIT_CR10_READ 0x0a
#define VMEXIT_CR11_READ 0x0b
#define VMEXIT_CR12_READ 0x0c
#define VMEXIT_CR13_READ 0x0d
#define VMEXIT_CR14_READ 0x0e
#define VMEXIT_CR15_READ 0x0f
#define VMEXIT_CR0_WRITE 0x10
#define VMEXIT_CR1_WRITE 0x11
#define VMEXIT_CR2_WRITE 0x12
#define VMEXIT_CR3_WRITE 0x13
#define VMEXIT_CR4_WRITE 0x14
#define VMEXIT_CR5_WRITE 0x15
#define VMEXIT_CR6_WRITE 0x16
#define VMEXIT_CR7_WRITE 0x17
#define VMEXIT_CR8_WRITE 0x18
#define VMEXIT_CR9_WRITE 0x19
#define VMEXIT_CR10_WRITE 0x1a
#define VMEXIT_CR11_WRITE 0x1b
#define VMEXIT_CR12_WRITE 0x1c
#define VMEXIT_CR13_WRITE 0x1d
#define VMEXIT_CR14_WRITE 0x1e
#define VMEXIT_CR15_WRITE 0x1f
#define VMEXIT_DR0_READ 0x20
#define VMEXIT_DR1_READ 0x21
#define VMEXIT_DR2_READ 0x22
#define VMEXIT_DR3_READ 0x23
#define VMEXIT_DR4_READ 0x24
#define VMEXIT_DR5_READ 0x25
#define VMEXIT_DR6_READ 0x26
#define VMEXIT_DR7_READ 0x27
#define VMEXIT_DR8_READ 0x28
#define VMEXIT_DR9_READ 0x29
#define VMEXIT_DR10_READ 0x2a
#define VMEXIT_DR11_READ 0x2b
#define VMEXIT_DR12_READ 0x2c
#define VMEXIT_DR13_READ 0x2d
#define VMEXIT_DR14_READ 0x2e
#define VMEXIT_DR15_READ 0x2f
#define VMEXIT_DR0_WRITE 0x30
#define VMEXIT_DR1_WRITE 0x31
#define VMEXIT_DR2_WRITE 0x32
#define VMEXIT_DR3_WRITE 0x33
#define VMEXIT_DR4_WRITE 0x34
#define VMEXIT_DR5_WRITE 0x35
#define VMEXIT_DR6_WRITE 0x36
#define VMEXIT_DR7_WRITE 0x37
#define VMEXIT_DR8_WRITE 0x38
#define VMEXIT_DR9_WRITE 0x39
#define VMEXIT_DR10_WRITE 0x3a
#define VMEXIT_DR11_WRITE 0x3b
#define VMEXIT_DR12_WRITE 0x3c
#define VMEXIT_DR13_WRITE 0x3d
#define VMEXIT_DR14_WRITE 0x3e
#define VMEXIT_DR15_WRITE 0x3f
#define VMEXIT_EXCP0 0x40
#define VMEXIT_EXCP1 0x41
#define VMEXIT_EXCP2 0x42
#define VMEXIT_EXCP3 0x43
#define VMEXIT_EXCP4 0x44
#define VMEXIT_EXCP5 0x45
#define VMEXIT_EXCP6 0x46
#define VMEXIT_EXCP7 0x47
#define VMEXIT_EXCP8 0x48
#define VMEXIT_EXCP9 0x49
#define VMEXIT_EXCP10 0x4a
#define VMEXIT_EXCP11 0x4b
#define VMEXIT_EXCP12 0x4c
#define VMEXIT_EXCP13 0x4d
#define VMEXIT_EXCP14 0x4e
#define VMEXIT_EXCP15 0x4f
#define VMEXIT_EXCP16 0x50
#define VMEXIT_EXCP17 0x51
#define VMEXIT_EXCP18 0x52
#define VMEXIT_EXCP19 0x53
#define VMEXIT_EXCP20 0x54
#define VMEXIT_EXCP21 0x55
#define VMEXIT_EXCP22 0x56
#define VMEXIT_EXCP23 0x57
#define VMEXIT_EXCP24 0x58
#define VMEXIT_EXCP25 0x59
#define VMEXIT_EXCP26 0x5a
#define VMEXIT_EXCP27 0x5b
#define VMEXIT_EXCP28 0x5c
#define VMEXIT_EXCP29 0x5d
#define VMEXIT_EXCP30 0x5e
#define VMEXIT_EXCP31 0x5f
#define VMEXIT_INTR 0x60
#define VMEXIT_NMI 0x61
#define VMEXIT_SMI 0x62
#define VMEXIT_INIT 0x63
#define VMEXIT_VINTR 0x64
#define VMEXIT_CR0_SEL_WRITE 0x65
#define VMEXIT_IDTR_READ 0x66
#define VMEXIT_GDTR_READ 0x67
#define VMEXIT_LDTR_READ 0x68
#define VMEXIT_TR_READ 0x69
#define VMEXIT_IDTR_WRITE 0x6a
#define VMEXIT_GDTR_WRITE 0x6b
#define VMEXIT_LDTR_WRITE 0x6c
#define VMEXIT_TR_WRITE 0x6d
#define VMEXIT_RDTSC 0x6e
#define VMEXIT_RDPMC 0x6f
#define VMEXIT_PUSHF 0x70
#define VMEXIT_POPF 0x71
#define VMEXIT_CPUID 0x72
#define VMEXIT_RSM 0x73
#define VMEXIT_IRET 0x74
#define VMEXIT_SWINT 0x75
#define VMEXIT_INVD 0x76
#define VMEXIT_PAUSE 0x77
#define VMEXIT_HLT 0x78
#define VMEXIT_INVLPG 0x79
#define VMEXIT_INVLPGA 0x7a
#define VMEXIT_IOIO 0x7b
#define VMEXIT_MSR 0x7c
#define VMEXIT_TASK_SWITCH 0x7d
#define VMEXIT_FERR_FREEZE 0x7e
#define VMEXIT_SHUTDOWN 0x7f
#define VMEXIT_VMRUN 0x80
#define VMEXIT_VMMCALL 0x81
#define VMEXIT_VMLOAD 0x82
#define VMEXIT_VMSAVE 0x83
#define VMEXIT_STGI 0x84
#define VMEXIT_CLGI 0x85
#define VMEXIT_SKINIT 0x86
#define VMEXIT_RDTSCP 0x87
#define VMEXIT_ICEBP 0x88
#define VMEXIT_WBINVD 0x89
#define VMEXIT_MONITOR 0x8a
#define VMEXIT_MWAIT 0x8b
#define VMEXIT_MWAIT_CONDITIONAL 0x8c
#define VMEXIT_XSETBV 0x8d
#define VMEXIT_NPF 0x400
#define AVIC_INCOMPLETE_IPI 0x401
#define AVIC_NOACCEL 0x402
#define VMEXIT_INVALID -1
int handleVMEvent_amd(pcpuinfo currentcpuinfo, VMRegisters *vmregisters);
#endif