visor/include/x86/vmx.h

79 lines
1.1 KiB
C
Raw Normal View History

2025-03-10 19:19:53 +01:00
#ifndef _VISOR_VMX_H_
#define _VISOR_VMX_H_
#include <stdint.h>
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