aboutsummaryrefslogtreecommitdiff
path: root/src/mm/mod.rs
diff options
context:
space:
mode:
authorTianhao Wang <shrik3@mailbox.org>2024-05-30 09:35:16 +0200
committerTianhao Wang <shrik3@mailbox.org>2024-06-11 15:17:11 +0200
commit714e69d281e8b61d4214cea1c7e0a33a2f9cde71 (patch)
treef7723a75835d9af0b1bd090d9dd3bd2511066f84 /src/mm/mod.rs
parentfe791acbe74705b7401a19f1d85cb2f51e8ff616 (diff)
mm: fix Range type and addr rounding
Signed-off-by: Tianhao Wang <shrik3@mailbox.org>
Diffstat (limited to 'src/mm/mod.rs')
-rw-r--r--src/mm/mod.rs30
1 files changed, 16 insertions, 14 deletions
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,
+ );
}