From 82e0908abbdab2b54b3e25845dba11ad5f705a6b Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 7 Feb 2022 16:08:01 -0700 Subject: [PATCH] Workaround for re-using page table in kernel --- src/lib.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e5571e333b..46bfe277eb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -125,15 +125,6 @@ pub unsafe extern "C" fn kstart( println!("HEAP: {:X}:{:X}", heap_start, heap_size); ALLOCATOR.lock().init(heap_start, heap_size); - - let stack_size = 0x20000; - let stack_base = ALLOCATOR.alloc_zeroed( - Layout::from_size_align(stack_size, 4096).unwrap() - ); - if stack_base.is_null() { - panic!("Failed to allocate memory for stack"); - } - // Locate kernel on RedoxFS let kernel = { //TODO: ensure boot_disk is 8-bit @@ -182,6 +173,16 @@ pub unsafe extern "C" fn kstart( let page_phys = paging::paging_create(kernel.as_ptr() as usize) .expect("Failed to set up paging"); + //TODO: properly reserve page table allocations so kernel does not re-use them + + let stack_size = 0x20000; + let stack_base = ALLOCATOR.alloc_zeroed( + Layout::from_size_align(stack_size, 4096).unwrap() + ); + if stack_base.is_null() { + panic!("Failed to allocate memory for stack"); + } + let args = KernelArgs { kernel_base: kernel.as_ptr() as u64, kernel_size: kernel.len() as u64,