#ifndef _VISOR_VMX_H_ #define _VISOR_VMX_H_ #include struct VMCS { /* VMCS Header */ uint32_t revisionID; uint32_t abortIndicator; /* Guest-state area */ /* Host-state area */ /* VM-execution control fields */ /* VM-exit control fields */ /* VM-entry control fields */ /* VM-exit information fields */ }; static inline void vmxon(void *region) { __asm__ volatile ("vmxon %0\n\t" :: "r"(region)); } static inline void vmxoff(void) { __asm__ volatile ("vmxoff\n\t" ::); } static inline void vmptrld(void *region) { __asm__ volatile ("vmptrld %0\n\t" :: "r"(region)); } static inline void vmptrst(void *arg) { __asm__ volatile ("vmptrst\n\t" ::); } static inline void vmclear(void *region) { __asm__ volatile ("vmclear %0\n\t" :: "r"(region)); } static inline void vmlaunch(void) { __asm__ volatile ("vmlaunch\n\t" ::); } static inline void vmresume(void) { __asm__ volatile ("vmresume\n\t" ::); } static inline void vmread() { __asm__ volatile ("vmread\n\t" ::); } static inline void vmwrite() { __asm__ volatile ("vmwrite\n\t" ::); } static inline void vmcall() { __asm__ volatile ("vmcall\n\t" ::); } #endif