On 11/10/21 8:04 AM, LIU Zhiwei wrote:
We need not specially process vtype when XLEN changes.
Signed-off-by: LIU Zhiwei <[email protected]>
---
  target/riscv/cpu.h           |  1 +
  target/riscv/csr.c           | 15 ++++++++++++++-
  target/riscv/machine.c       |  1 +
  target/riscv/vector_helper.c |  7 ++-----
  4 files changed, 18 insertions(+), 6 deletions(-)

This patch should come before patch 6, which is over-complicated.

+    target_ulong vill;

This could be bool, though there's no good place to slot it that does not result in unused padding. Comments should be added to show that this bit is now missing from vtype.

diff --git a/target/riscv/machine.c b/target/riscv/machine.c
index 19e982d3f0..cc4dda4b93 100644
--- a/target/riscv/machine.c
+++ b/target/riscv/machine.c
@@ -104,6 +104,7 @@ static const VMStateDescription vmstate_vector = {
              VMSTATE_UINTTL(env.vl, RISCVCPU),
              VMSTATE_UINTTL(env.vstart, RISCVCPU),
              VMSTATE_UINTTL(env.vtype, RISCVCPU),
+            VMSTATE_UINTTL(env.vill, RISCVCPU),
              VMSTATE_END_OF_LIST()

This will need a bump to version.

@@ -45,11 +45,8 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong 
s1,
      }
      if ((sew > cpu->cfg.elen) || vill || (ediv != 0) || (reserved != 0)) {
          /* only set vill bit. */
-        if (xlen < TARGET_LONG_BITS) {
-            env->vtype = FIELD_DP64(0, VTYPE, VILL_XLEN32, 1);
-        } else {
-            env->vtype = FIELD_DP64(0, VTYPE, VILL, 1);
-        }
+        env->vill = 1;
+        env->vtype = 0;

This is fine.

You're missing the updates to cpu_get_tb_cpu_state.


r~

Reply via email to