23 lines
739 B
Rust
23 lines
739 B
Rust
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
|
|
}
|