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

Reply via email to