78 lines
1.1 KiB
C
78 lines
1.1 KiB
C
#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
|