use core::{ffi::c_void, ops::Range, ptr::addr_of}; pub mod physical_memory_free_list; /// The number of bits in the offset in a page. pub const PAGE_SIZE_BITS: usize = 12; /// The size of a page, in bytes. pub const PAGE_SIZE: usize = 1 << PAGE_SIZE_BITS; /// Returns the physical address range the kernel is in. pub fn kernel_boundaries() -> Range { extern "C" { static kernel_start: c_void; static kernel_end: c_void; } // SAFETY: We only use these as addresses, we never dereference them. let (kernel_start_addr, kernel_end_addr) = unsafe { (addr_of!(kernel_start), addr_of!(kernel_end)) }; kernel_start_addr as usize..kernel_end_addr as usize }