mod definitions;
mod instructions;
mod percpu;
mod structs;
mod vcpu;
mod vmcs;
use x86_vlapic::EmulatedLocalApic;
use self::structs::VmxBasic;
pub use self::{percpu::VmxPerCpuState, vcpu::VmxVcpu, vmcs::VmxExitInfo};
use crate::{X86HostOps, X86HostPhysAddr, X86VcpuError};
pub fn read_vmcs_revision_id() -> u32 {
VmxBasic::read().revision_id
}
pub fn x86_apic_access_page_addr<H: X86HostOps>() -> X86HostPhysAddr {
let addr = EmulatedLocalApic::<H>::virtual_apic_access_addr();
X86HostPhysAddr::from_usize(addr.as_usize())
}
fn as_axerr(err: x86::vmx::VmFail) -> X86VcpuError {
use x86::vmx::VmFail;
match err {
VmFail::VmFailValid => X86VcpuError::BadState,
VmFail::VmFailInvalid => X86VcpuError::BadState,
}
}