wip
This commit is contained in:
@@ -97,8 +97,13 @@ pub extern "sysv64" fn main(usable_memory: &nel_os_common::memory::UsableMemory)
|
||||
|
||||
info!("Usable memory in bitmap: {}MiB", usable_frame * 4 / 1024);
|
||||
|
||||
let lv4_table = paging::init_page_table(&mut bitmap_table);
|
||||
let mut mapper = unsafe { OffsetPageTable::new(lv4_table, VirtAddr::new(0x0)) };
|
||||
let mut mapper = {
|
||||
let lv4_table_ptr = paging::init_page_table(&mut bitmap_table);
|
||||
let lv4_table = unsafe { &mut *lv4_table_ptr };
|
||||
unsafe { OffsetPageTable::new(lv4_table, VirtAddr::new(0x0)) }
|
||||
};
|
||||
|
||||
info!("Page table initialized");
|
||||
|
||||
allocator::init_heap(&mut mapper, &mut bitmap_table).unwrap();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use x86_64::{
|
||||
registers::control::Cr3,
|
||||
registers::control::{Cr3, Cr3Flags},
|
||||
structures::paging::{
|
||||
page_table::FrameError, FrameAllocator, PageSize, PageTable, PageTableFlags, PhysFrame,
|
||||
Size1GiB, Size4KiB,
|
||||
@@ -7,8 +7,10 @@ use x86_64::{
|
||||
PhysAddr, VirtAddr,
|
||||
};
|
||||
|
||||
pub fn init_page_table(frame_allocator: &mut impl FrameAllocator<Size4KiB>) -> &mut PageTable {
|
||||
let (_, lv4_table) = new_page_table(frame_allocator);
|
||||
use crate::info;
|
||||
|
||||
pub fn init_page_table(frame_allocator: &mut impl FrameAllocator<Size4KiB>) -> *mut PageTable {
|
||||
let (lv4_frame, lv4_table) = new_page_table(frame_allocator);
|
||||
let (lv3_frame, lv3_table) = new_page_table(frame_allocator);
|
||||
|
||||
let base_flags = PageTableFlags::PRESENT | PageTableFlags::WRITABLE | PageTableFlags::GLOBAL;
|
||||
@@ -28,7 +30,13 @@ pub fn init_page_table(frame_allocator: &mut impl FrameAllocator<Size4KiB>) -> &
|
||||
}
|
||||
}
|
||||
|
||||
lv4
|
||||
info!("Setting new page table...");
|
||||
|
||||
unsafe {
|
||||
Cr3::write(lv4_frame, Cr3Flags::empty());
|
||||
}
|
||||
|
||||
lv4_table
|
||||
}
|
||||
|
||||
fn new_page_table(
|
||||
|
||||
Reference in New Issue
Block a user