summaryrefslogtreecommitdiff
path: root/src/kernel/mm
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2025-12-13 23:21:03 +0800
committerRichard Qin <richard.qin.x@gmail.com>2025-12-13 23:21:03 +0800
commit28fd88e0dd66728b22cd792deb5a1e8636f36ed3 (patch)
tree059cc8350adb68ca994de2c6ccf402895b575d88 /src/kernel/mm
parent27fc7bda593c8bd2c24a334a368772b5f15d4e9e (diff)
downloadlume-28fd88e0dd66728b22cd792deb5a1e8636f36ed3.tar.gz
lume-28fd88e0dd66728b22cd792deb5a1e8636f36ed3.tar.xz
feat: add preemptive scheduling, SBI timer support and FDT parser.
Diffstat (limited to 'src/kernel/mm')
-rw-r--r--src/kernel/mm/vm.cc16
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);