Nothing to see here, move along
at main 20 lines 536 B view raw
1pub fn phys_to_virt(phys: u64, hhdm_offset: u64) -> Option<u64> { 2 phys.checked_add(hhdm_offset) 3} 4 5pub fn virt_to_phys(virt: u64, hhdm_offset: u64) -> Option<u64> { 6 virt.checked_sub(hhdm_offset) 7} 8 9pub const CANONICAL_SHIFT: u32 = 47; 10 11pub fn is_canonical(addr: u64) -> bool { 12 const { 13 assert!( 14 CANONICAL_SHIFT == 47, 15 "is_canonical assumes 4-level paging (48-bit VA)" 16 ) 17 } 18 let top_bits = addr >> CANONICAL_SHIFT; 19 top_bits == 0 || top_bits == (u64::MAX >> CANONICAL_SHIFT) 20}