[PATCH] firmware: Do not allow harts with different XLEN to boot

Atish Patra atish.patra at wdc.com
Tue Jun 1 18:42:01 PDT 2021


OpenSBI is built separately for RV32/RV64. Thus, it shouldn't try to boot
harts with a different XLEN compared to what it is compiled with.

This patch fixes the issue observed in beagleV which has two U74(RV64) and
one E24 (RV32) harts.

Signed-off-by: Atish Patra <atish.patra at wdc.com>
---
 firmware/fw_base.S | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/firmware/fw_base.S b/firmware/fw_base.S
index a5ce946aa3fe..ae12a126ca66 100644
--- a/firmware/fw_base.S
+++ b/firmware/fw_base.S
@@ -47,6 +47,16 @@
 	.globl _start
 	.globl _start_warm
 _start:
+	csrr   t0, misa
+	slti   t1, t0, 0
+	slli   t1, t1, 1
+	slli   t0, t0, 1
+	slti   t0, t0, 0
+	add    t2, t0, t1
+	li     t3, __riscv_xlen
+	srli   t3, t3, 5
+	bne    t2, t3, _start_hang
+
 	/* Find preferred boot HART id */
 	MOV_3R	s0, a0, s1, a1, s2, a2
 	call	fw_boot_hart
-- 
2.31.1




More information about the opensbi mailing list