summaryrefslogtreecommitdiff
path: root/kernel/riscv/start.S
diff options
context:
space:
mode:
authorNathan Lee <me@nwlee.tech>2026-08-30 20:15:31 -0500
committerNathan Lee <me@nwlee.tech>2026-08-30 20:15:31 -0500
commitb62815bfb6b05e90eef04d2021305b6f5b335f53 (patch)
tree3a8c0437677b9cd290d64a58651455ba2095787c /kernel/riscv/start.S
parent7f4c833ced046f88160a50e7adb1f55343e7e759 (diff)
fix typos + .data section issues
Diffstat (limited to 'kernel/riscv/start.S')
-rw-r--r--kernel/riscv/start.S24
1 files changed, 19 insertions, 5 deletions
diff --git a/kernel/riscv/start.S b/kernel/riscv/start.S
index ecec47b..aa35916 100644
--- a/kernel/riscv/start.S
+++ b/kernel/riscv/start.S
@@ -12,17 +12,31 @@ _start:
la t0, _syscall_start
csrw stvec, t0
-
+
la sp, __stack_top
+ # Copy .data
+ la t0, __data_load
+ la t1, __data_start
+ la t2, __data_end
+
+1:
+ beq t1, t2, 2f
+ lw t3, 0(t0)
+ sw t3, 0(t1)
+ addi t0, t0, 4
+ addi t1, t1, 4
+ j 1b
+2:
+ # Zero .bss
la t0, __bss_start
la t1, __bss_end
- beq t0, t1, 2f
-1:
+3:
+ beq t0, t1, 4f
sw zero, 0(t0)
addi t0, t0, 4
- bltu t0, t1, 1b
-2:
+ j 3b
+4:
call kernel_main
wfi