diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2025-12-13 23:21:03 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2025-12-13 23:21:03 +0800 |
| commit | 28fd88e0dd66728b22cd792deb5a1e8636f36ed3 (patch) | |
| tree | 059cc8350adb68ca994de2c6ccf402895b575d88 /src/kernel/mm/vm.cc | |
| parent | 27fc7bda593c8bd2c24a334a368772b5f15d4e9e (diff) | |
| download | lume-28fd88e0dd66728b22cd792deb5a1e8636f36ed3.tar.gz lume-28fd88e0dd66728b22cd792deb5a1e8636f36ed3.tar.xz | |
feat: add preemptive scheduling, SBI timer support and FDT parser.
Diffstat (limited to 'src/kernel/mm/vm.cc')
| -rw-r--r-- | src/kernel/mm/vm.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/kernel/mm/vm.cc b/src/kernel/mm/vm.cc index 8696fdb..8a7068e 100644 --- a/src/kernel/mm/vm.cc +++ b/src/kernel/mm/vm.cc @@ -2,6 +2,7 @@ #include "kernel/pmm.h" #include "drivers/uart.h" #include "common/types.h" +#include "kernel/config.h" extern "C" char text_start[]; extern "C" char text_end[]; @@ -76,9 +77,20 @@ namespace VM { kernel_pagetable = (pagetable_t)PMM::alloc_page(); - mappages(kernel_pagetable, 0x10000000, 0x10000, 0x10000000, PTE_R | PTE_W); + if (g_uart_base != 0) + { + mappages(kernel_pagetable, g_uart_base, PGSIZE, g_uart_base, PTE_R | PTE_W); + } + + // if (g_clint_base != 0) + // { + // mappages(kernel_pagetable, g_clint_base, 0x10000, g_clint_base, PTE_R | PTE_W); + // } - mappages(kernel_pagetable, 0x2000000, 0x10000, 0x2000000, PTE_R | PTE_W); + if (g_plic_base != 0) + { + mappages(kernel_pagetable, g_plic_base, 0x400000, g_plic_base, PTE_R | PTE_W); + } mappages(kernel_pagetable, (uint64)text_start, (uint64)text_end - (uint64)text_start, (uint64)text_start, PTE_R | PTE_X); |
