use x86_64::structures::paging::PhysFrame;
pub struct VM;
static mut PHYS_OFFSET: Option<u64> = None;
static mut ROOT: Option<PhysFrame> = None;
impl VM {
pub fn phys_offset() -> u64 {
unsafe { PHYS_OFFSET.unwrap() }
}
pub fn set_phys_offset(offset: u64) {
unsafe {
PHYS_OFFSET.replace(offset);
}
}
pub fn phys_to_virt(phys: u64) -> u64 {
phys + VM::phys_offset()
}
pub fn virt_to_phys(virt: u64) -> u64 {
virt - VM::phys_offset()
}
pub fn root_mm() -> PhysFrame {
unsafe { ROOT.unwrap() }
}
}