From 714e69d281e8b61d4214cea1c7e0a33a2f9cde71 Mon Sep 17 00:00:00 2001 From: Tianhao Wang Date: Thu, 30 May 2024 09:35:16 +0200 Subject: mm: fix Range type and addr rounding Signed-off-by: Tianhao Wang --- src/mm/mod.rs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'src/mm/mod.rs') diff --git a/src/mm/mod.rs b/src/mm/mod.rs index 27737e8..8d07cc5 100644 --- a/src/mm/mod.rs +++ b/src/mm/mod.rs @@ -1,6 +1,7 @@ use crate::defs::*; use crate::io::*; use crate::machine::multiboot; +use core::ops::Range; pub mod pma; use lazy_static::lazy_static; @@ -32,20 +33,21 @@ pub fn init() { continue; } // TODO early break if the array is already full - if mblock.get_range().contains(pmap_kernel_end()) { - let r = Range { - addr: pmap_kernel_end(), - len: mblock.get_end() - pmap_kernel_end(), - }; - inserted += GLOBAL_PMA.lock().insert_range(r); - } else { - inserted += GLOBAL_PMA.lock().insert_range(mblock.get_range()); + let mut r = mblock.get_range(); + if mblock.get_range().contains(&pmap_kernel_end()) { + r.start = pmap_kernel_end(); } - println!( - "pma init: {:#X}KiB free memory, {:#X} pages inserted from block {:#X?}", - inserted * 0x4, - inserted, - mblock, - ); + inserted += GLOBAL_PMA.lock().insert_range(&r); } + + println!( + "pma init: kernel mapped at {:#X} - {:#X}", + pmap_kernel_start(), + pmap_kernel_end() + ); + println!( + "pma init: {:#X}KiB free memory, {:#X} pages", + inserted * 0x4, + inserted, + ); } -- cgit v1.2.3-70-g09d2