From ac9741e12222e72bad3414bc6f588e70a3d130cc Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Tue, 14 Apr 2026 22:47:15 +0800 Subject: feat: implement FDT-based memory discovery and add comprehensive debug logging to exec syscalls --- src/kernel/mm/vm.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/kernel/mm/vm.cc') diff --git a/src/kernel/mm/vm.cc b/src/kernel/mm/vm.cc index 47b80e9..be2f2f2 100644 --- a/src/kernel/mm/vm.cc +++ b/src/kernel/mm/vm.cc @@ -8,6 +8,7 @@ #include "common/types.h" #include "lib/string.h" #include "drivers/uart.h" +#include "kernel/fdt.h" extern "C" { @@ -421,9 +422,15 @@ namespace VM { kernel_pagetable = uvmcreate(); - kvmmap(0x10000000, 0x10000000, 0x10000, PTE_R | PTE_W); - kvmmap(0x0c000000, 0x0c000000, 0x400000, PTE_R | PTE_W); - kvmmap(0x02000000, 0x02000000, 0x10000, PTE_R | PTE_W); // CLINT + // 1. Map all device MMIO regions discovered by FDT + for (int i = 0; i < g_devices.mmio_count; i++) + { + uint64 base = g_devices.mmio_regions[i].base; + uint64 size = g_devices.mmio_regions[i].size; + kvmmap(base, base, size, PTE_R | PTE_W); + } + + // 2. Map Kernel Memory (PHYSTOP is now dynamic based on FDT) kvmmap(KERNBASE, KERNBASE, PHYSTOP - KERNBASE, PTE_R | PTE_W | PTE_X); } -- cgit v1.2.3