pub mod allocator; pub mod page_table; pub use allocator::init_allocator; pub use page_table::{ PAGE_SIZE, PageTable, Sv39Flags, USER_VA_END, USER_VA_START, activate, active_root, check_wx, create_user_root, init_kernel_page_table, map_user_page, translate_user, unmap_user_page, }; /// Direct-map offset: RAM, MMIO and the kernel image sit at physical + this /// (start of Sv39's upper half). Must match linker.ld. pub const PHYS_OFFSET: usize = 0xFFFF_FFC0_0000_0000; /// Where the kernel sees physical address `pa`. pub const fn phys_to_virt(pa: usize) -> usize { pa + PHYS_OFFSET } /// The physical address behind a direct-map kernel address `va`. pub const fn virt_to_phys(va: usize) -> usize { va - PHYS_OFFSET }