From f8f1697203341fbecd40e947a028c9dcebfcebe7 Mon Sep 17 00:00:00 2001 From: Ivan Velickovic Date: Tue, 11 Jun 2024 10:27:46 +0800 Subject: [PATCH] tool: fix logic bugs Mistakes from the rewrite of the tool. Signed-off-by: Ivan Velickovic --- tool/microkit/src/lib.rs | 3 ++- tool/microkit/src/main.rs | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tool/microkit/src/lib.rs b/tool/microkit/src/lib.rs index 05097a3c..b321bec8 100644 --- a/tool/microkit/src/lib.rs +++ b/tool/microkit/src/lib.rs @@ -146,8 +146,9 @@ impl DisjointMemoryRegion { pub fn insert_region(&mut self, base: u64, end: u64) { let mut insert_idx = self.regions.len(); for (idx, region) in self.regions.iter().enumerate() { - if end >= region.base { + if end < region.base { insert_idx = idx; + break; } } // FIXME: Should extend here if adjacent rather than diff --git a/tool/microkit/src/main.rs b/tool/microkit/src/main.rs index f10a4428..f0e66444 100644 --- a/tool/microkit/src/main.rs +++ b/tool/microkit/src/main.rs @@ -627,6 +627,7 @@ fn emulate_kernel_boot(kernel_config: &Config, kernel_elf: &ElfFile, initial_tas let start = util::round_down(region.end - initial_objects_size, 1 << initial_objects_align); if start >= region.base { region_to_remove = Some(start); + break; } } if let Some(start) = region_to_remove {