use ax_memory_addr::{AddrRange, PhysAddr, VirtAddr, def_usize_addr, def_usize_addr_formatter};
pub type HostVirtAddr = VirtAddr;
pub type HostPhysAddr = PhysAddr;
def_usize_addr! {
pub type GuestVirtAddr;
pub type GuestPhysAddr;
}
def_usize_addr_formatter! {
GuestVirtAddr = "GVA:{}";
GuestPhysAddr = "GPA:{}";
}
pub type GuestVirtAddrRange = AddrRange<GuestVirtAddr>;
pub type GuestPhysAddrRange = AddrRange<GuestPhysAddr>;
#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
impl ax_page_table_multiarch::riscv::SvVirtAddr for GuestPhysAddr {
fn flush_tlb(_vaddr: Option<Self>) {
unsafe {
core::arch::asm!("hfence.vvma", options(nostack, nomem, preserves_flags));
}
}
}