summaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2025-12-09 00:57:38 +0800
committerRichard Qin <richard.qin.x@gmail.com>2025-12-09 00:57:38 +0800
commitc36e1b5e5e069ce1735dcc2a94aa45ba72ea2441 (patch)
tree34be19b553615cfe36a556452e3b7ebad5276216 /src/boot
parent8cf8be522133548ee25fdcb0258ddf3950a68bcf (diff)
downloadlume-c36e1b5e5e069ce1735dcc2a94aa45ba72ea2441.tar.gz
lume-c36e1b5e5e069ce1735dcc2a94aa45ba72ea2441.tar.xz
feat: Initial PMM implementation
Introduce the foundational Physical Memory Manager (PMM) and restructure the project for modularity. Implemented basic PMM and related memory management headers (mm/pmm.h, mm/vm.h). Updated Makefile and build process to support new modular structure.
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/entry.S46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/boot/entry.S b/src/boot/entry.S
index 1a6f6b8..0ca3b29 100644
--- a/src/boot/entry.S
+++ b/src/boot/entry.S
@@ -1,28 +1,40 @@
.section .text.entry
-.globl _start
+.global _start
_start:
csrr t0, mhartid
- bnez t0, .L_park_harts
+ bnez t0, .L_park
- la sp, _stack_top
+ li t0, 0x1fffffffffffff
+ csrw pmpaddr0, t0
+ li t0, 0xf
+ csrw pmpcfg0, t0
- la a0, _bss_start
- la a1, _bss_end
- bge a0, a1, .L_call_main
+ li t0, 0
+ li t1, (1 << 11) | (1 << 7)
+ csrw mstatus, t1
-.L_clear_bss:
- sd zero, (a0)
- addi a0, a0, 8
- blt a0, a1, .L_clear_bss
+ csrw satp, zero
-.L_call_main:
- call kernel_main
+ li t0, 0xffff
+ csrw medeleg, t0
+ csrw mideleg, t0
+
+ la t0, kernel_main
+ csrw mepc, t0
-.L_infinite_loop:
- wfi
- j .L_infinite_loop
+ la sp, stack_top
+
+ mret
-.L_park_harts:
+.L_park:
wfi
- j .L_park_harts \ No newline at end of file
+ j .L_park
+
+
+.section .bss
+.align 4
+.global stack_top
+stack_base:
+ .space 4096 * 4
+stack_top: \ No newline at end of file