0075-target-riscv-rvv-1.0-set-mstatus.SD-bit-when-writing.patch 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. From 1e98c970b4a3f3e359edd1eb883774b977232019 Mon Sep 17 00:00:00 2001
  2. From: Frank Chang <frank.chang@sifive.com>
  3. Date: Tue, 6 Oct 2020 23:48:24 +0800
  4. Subject: [PATCH 075/107] target/riscv: rvv-1.0: set mstatus.SD bit when
  5. writing vector CSRs
  6. Signed-off-by: Frank Chang <frank.chang@sifive.com>
  7. Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
  8. ---
  9. target/riscv/csr.c | 8 ++++----
  10. 1 file changed, 4 insertions(+), 4 deletions(-)
  11. diff --git a/target/riscv/csr.c b/target/riscv/csr.c
  12. index b932e28bbf..900c2fa50a 100644
  13. --- a/target/riscv/csr.c
  14. +++ b/target/riscv/csr.c
  15. @@ -293,7 +293,7 @@ static int write_vxrm(CPURISCVState *env, int csrno, target_ulong val)
  16. if (!env->debugger && !riscv_cpu_vector_enabled(env)) {
  17. return -RISCV_EXCP_ILLEGAL_INST;
  18. }
  19. - env->mstatus |= MSTATUS_VS;
  20. + env->mstatus |= MSTATUS_VS | MSTATUS_SD;
  21. #endif
  22. env->vxrm = val;
  23. @@ -312,7 +312,7 @@ static int write_vxsat(CPURISCVState *env, int csrno, target_ulong val)
  24. if (!env->debugger && !riscv_cpu_vector_enabled(env)) {
  25. return -RISCV_EXCP_ILLEGAL_INST;
  26. }
  27. - env->mstatus |= MSTATUS_VS;
  28. + env->mstatus |= MSTATUS_VS | MSTATUS_SD;
  29. #endif
  30. env->vxsat = val;
  31. @@ -331,7 +331,7 @@ static int write_vstart(CPURISCVState *env, int csrno, target_ulong val)
  32. if (!env->debugger && !riscv_cpu_vector_enabled(env)) {
  33. return -RISCV_EXCP_ILLEGAL_INST;
  34. }
  35. - env->mstatus |= MSTATUS_VS;
  36. + env->mstatus |= MSTATUS_VS | MSTATUS_SD;
  37. #endif
  38. /*
  39. @@ -354,7 +354,7 @@ static int write_vcsr(CPURISCVState *env, int csrno, target_ulong val)
  40. if (!env->debugger && !riscv_cpu_vector_enabled(env)) {
  41. return -RISCV_EXCP_ILLEGAL_INST;
  42. }
  43. - env->mstatus |= MSTATUS_VS;
  44. + env->mstatus |= MSTATUS_VS | MSTATUS_SD;
  45. #endif
  46. env->vxrm = (val & VCSR_VXRM) >> VCSR_VXRM_SHIFT;
  47. --
  48. 2.33.1