target/riscv: Only support a single VSXL length
authorAlistair Francis <alistair.francis@wdc.com>
Wed, 12 Aug 2020 19:13:38 +0000 (12:13 -0700)
committerAlistair Francis <alistair.francis@wdc.com>
Tue, 25 Aug 2020 16:11:36 +0000 (09:11 -0700)
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Message-id: f3f4fd2ec22a07cc1d750e96895d6813f131de4d.1597259519.git.alistair.francis@wdc.com
Message-Id: <f3f4fd2ec22a07cc1d750e96895d6813f131de4d.1597259519.git.alistair.francis@wdc.com>

target/riscv/csr.c

index f9ac21d6877aca1ecd73ca2d08fa5d11f8f2ea68..390ef781e4061ba15f20c2906b3b0db30ef9c0d9 100644 (file)
@@ -836,12 +836,21 @@ static int write_satp(CPURISCVState *env, int csrno, target_ulong val)
 static int read_hstatus(CPURISCVState *env, int csrno, target_ulong *val)
 {
     *val = env->hstatus;
+#ifdef TARGET_RISCV64
+    /* We only support 64-bit VSXL */
+    *val = set_field(*val, HSTATUS_VSXL, 2);
+#endif
     return 0;
 }
 
 static int write_hstatus(CPURISCVState *env, int csrno, target_ulong val)
 {
     env->hstatus = val;
+#ifdef TARGET_RISCV64
+    if (get_field(val, HSTATUS_VSXL) != 2) {
+        qemu_log_mask(LOG_UNIMP, "QEMU does not support mixed HSXLEN options.");
+    }
+#endif
     return 0;
 }