:: commit 31202dc37401ed3f2e1af07e6c1c114dd7125f66

Mintsuki <mintsuki@protonmail.com> — 2026-03-14 23:29

parents: 2820acf9b7

protos/linux_risc: Disable MMU and flush caches before RISC-V kernel entry

diff --git a/common/protos/linux_risc.c b/common/protos/linux_risc.c
index 6eadb647..57d789b0 100644
--- a/common/protos/linux_risc.c
+++ b/common/protos/linux_risc.c
@@ -371,7 +371,10 @@ noreturn static void jump_to_kernel(struct boot_param *p) {
 
     void (*kernel_entry)(uint64_t hartid, uint64_t dtb) = p->kernel_base;
     asm ("csrci   sstatus, 0x2\n\t"
-         "csrw    sie, zero\n\t");
+         "csrw    sie, zero\n\t"
+         "csrw    satp, zero\n\t"
+         "sfence.vma\n\t"
+         "fence.i\n\t");
     kernel_entry(bsp_hartid, (uint64_t)p->dtb);
 #elif defined(__aarch64__)
     printv("linux: device tree blob at %p\n", p->dtb);
tab: 248 wrap: offon