From: djtodoro <[email protected]>
Define MSTATUS_SBE (bit 36) and MSTATUS_MBE (bit 37) and set them alongside
MSTATUS_UBE at CPU reset for big-endian targets.
---
target/riscv/cpu.c | 2 +-
target/riscv/cpu_bits.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 0e24f2cbcd..c446cae75f 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -717,7 +717,7 @@ static void riscv_cpu_reset_hold(Object *obj, ResetType
type)
}
}
#if defined(TARGET_BIG_ENDIAN)
- env->mstatus |= MSTATUS_UBE;
+ env->mstatus |= MSTATUS_UBE | MSTATUS_SBE | MSTATUS_MBE;
#endif
env->mcause = 0;
env->miclaim = MIP_SGEIP;
diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h
index b62dd82fe7..3f146a43fe 100644
--- a/target/riscv/cpu_bits.h
+++ b/target/riscv/cpu_bits.h
@@ -629,6 +629,8 @@
#define MSTATUS_SPELP 0x00800000 /* zicfilp */
#define MSTATUS_SDT 0x01000000
#define MSTATUS_MPELP 0x020000000000 /* zicfilp */
+#define MSTATUS_SBE 0x1000000000ULL
+#define MSTATUS_MBE 0x2000000000ULL
#define MSTATUS_GVA 0x4000000000ULL
#define MSTATUS_MPV 0x8000000000ULL
#define MSTATUS_MDT 0x40000000000ULL /* Smdbltrp extension */
--
2.34.1