[PATCH] riscv: Set text_offset correctly for M-Mode

Sean Anderson seanga2 at gmail.com
Sat Oct 17 14:28:48 EDT 2020


M-Mode Linux is loaded at the start of RAM, not 2MB later. Perhaps this
should be calculated based on PAGE_OFFSET somehow? Even better would be to
deprecate text_offset and instead introduce something absolute.

Signed-off-by: Sean Anderson <seanga2 at gmail.com>
---

 arch/riscv/kernel/head.S | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S
index 0a4e81b8dc79..74679f338c65 100644
--- a/arch/riscv/kernel/head.S
+++ b/arch/riscv/kernel/head.S
@@ -27,12 +27,17 @@ ENTRY(_start)
 	/* reserved */
 	.word 0
 	.balign 8
+#ifdef CONFIG_RISCV_S_MODE
 #if __riscv_xlen == 64
 	/* Image load offset(2MB) from start of RAM */
 	.dword 0x200000
 #else
 	/* Image load offset(4MB) from start of RAM */
 	.dword 0x400000
+#endif
+#else
+	/* Image load offset (0MB) from start of RAM for M-mode */
+	.dword 0
 #endif
 	/* Effective size of kernel image */
 	.dword _end - _start
-- 
2.28.0




More information about the linux-riscv mailing list