All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU
@ 2018-05-11  3:52 Richard Henderson
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 1/9] target/alpha: " Richard Henderson
                   ` (8 more replies)
  0 siblings, 9 replies; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel

With Peter's new patch for "-d fpu", it makes sense to honor
this setting in as many targets as currently dump the fpu.


r~


Richard Henderson (9):
  target/alpha: Honor CPU_DUMP_FPU
  target/mips: Honor CPU_DUMP_FPU
  target/ppc: Honor CPU_DUMP_FPU
  target/riscv: Introduce cpu_riscv_get_fcsr
  target/riscv: Honor CPU_DUMP_FPU
  target/s390x: Honor CPU_DUMP_FPU
  target/sparc: Honor CPU_DUMP_FPU
  target/unicore32: Honor CPU_DUMP_FPU
  target/xtensa: Honor CPU_DUMP_FPU

 target/riscv/cpu.h           |  1 +
 target/alpha/helper.c        | 17 ++++++++---------
 target/mips/translate.c      |  3 ++-
 target/ppc/translate.c       | 20 +++++++++++++-------
 target/riscv/cpu.c           | 16 +++++++++++-----
 target/riscv/fpu_helper.c    |  6 ++++++
 target/riscv/op_helper.c     |  3 +--
 target/s390x/helper.c        | 23 ++++++++++++-----------
 target/sparc/cpu.c           | 17 ++++++++++-------
 target/unicore32/translate.c |  4 +++-
 target/xtensa/translate.c    |  3 ++-
 11 files changed, 69 insertions(+), 44 deletions(-)

-- 
2.17.0

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 1/9] target/alpha: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:48   ` Philippe Mathieu-Daudé
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 2/9] target/mips: " Richard Henderson
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/alpha/helper.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index 8a6a948572..57e2c212b3 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -442,20 +442,19 @@ void alpha_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
     cpu_fprintf(f, "     PC  " TARGET_FMT_lx "      PS  %02x\n",
                 env->pc, extract32(env->flags, ENV_FLAG_PS_SHIFT, 8));
     for (i = 0; i < 31; i++) {
-        cpu_fprintf(f, "IR%02d %s " TARGET_FMT_lx " ", i,
-                    linux_reg_names[i], cpu_alpha_load_gr(env, i));
-        if ((i % 3) == 2)
-            cpu_fprintf(f, "\n");
+        cpu_fprintf(f, "IR%02d %s " TARGET_FMT_lx "%c", i,
+                    linux_reg_names[i], cpu_alpha_load_gr(env, i),
+                    (i % 3) == 2 ? '\n' : ' ');
     }
 
     cpu_fprintf(f, "lock_a   " TARGET_FMT_lx " lock_v   " TARGET_FMT_lx "\n",
                 env->lock_addr, env->lock_value);
 
-    for (i = 0; i < 31; i++) {
-        cpu_fprintf(f, "FIR%02d    " TARGET_FMT_lx " ", i,
-                    *((uint64_t *)(&env->fir[i])));
-        if ((i % 3) == 2)
-            cpu_fprintf(f, "\n");
+    if (flags & CPU_DUMP_FPU) {
+        for (i = 0; i < 31; i++) {
+            cpu_fprintf(f, "FIR%02d    %016" PRIx64 "%c", i, env->fir[i],
+                        (i % 3) == 2 ? '\n' : ' ');
+        }
     }
     cpu_fprintf(f, "\n");
 }
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 2/9] target/mips: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 1/9] target/alpha: " Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:49   ` Philippe Mathieu-Daudé
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 3/9] target/ppc: " Richard Henderson
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Aurelien Jarno, Yongbok Kim

Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/mips/translate.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/mips/translate.c b/target/mips/translate.c
index d05ee67e63..136947adc5 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -20445,8 +20445,9 @@ void mips_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
                 env->CP0_Config2, env->CP0_Config3);
     cpu_fprintf(f, "    Config4 0x%08x Config5 0x%08x\n",
                 env->CP0_Config4, env->CP0_Config5);
-    if (env->hflags & MIPS_HFLAG_FPU)
+    if ((flags & CPU_DUMP_FPU) && (env->hflags & MIPS_HFLAG_FPU)) {
         fpu_dump_state(env, f, cpu_fprintf, flags);
+    }
 }
 
 void mips_tcg_init(void)
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 3/9] target/ppc: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 1/9] target/alpha: " Richard Henderson
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 2/9] target/mips: " Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:50   ` Philippe Mathieu-Daudé
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr Richard Henderson
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexander Graf, David Gibson

Cc: Alexander Graf <agraf@suse.de>
Cc: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/ppc/translate.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index 2a4140f420..fd66c80cc7 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -7048,14 +7048,20 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
     }
     cpu_fprintf(f, " ]             RES " TARGET_FMT_lx "\n",
                 env->reserve_addr);
-    for (i = 0; i < 32; i++) {
-        if ((i & (RFPL - 1)) == 0)
-            cpu_fprintf(f, "FPR%02d", i);
-        cpu_fprintf(f, " %016" PRIx64, *((uint64_t *)&env->fpr[i]));
-        if ((i & (RFPL - 1)) == (RFPL - 1))
-            cpu_fprintf(f, "\n");
+
+    if (flags & CPU_DUMP_FPU) {
+        for (i = 0; i < 32; i++) {
+            if ((i & (RFPL - 1)) == 0) {
+                cpu_fprintf(f, "FPR%02d", i);
+            }
+            cpu_fprintf(f, " %016" PRIx64, *((uint64_t *)&env->fpr[i]));
+            if ((i & (RFPL - 1)) == (RFPL - 1)) {
+                cpu_fprintf(f, "\n");
+            }
+        }
+        cpu_fprintf(f, "FPSCR " TARGET_FMT_lx "\n", env->fpscr);
     }
-    cpu_fprintf(f, "FPSCR " TARGET_FMT_lx "\n", env->fpscr);
+
 #if !defined(CONFIG_USER_ONLY)
     cpu_fprintf(f, " SRR0 " TARGET_FMT_lx "  SRR1 " TARGET_FMT_lx
                    "    PVR " TARGET_FMT_lx " VRSAVE " TARGET_FMT_lx "\n",
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
                   ` (2 preceding siblings ...)
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 3/9] target/ppc: " Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:51   ` Philippe Mathieu-Daudé
  2018-05-18  2:46   ` Michael Clark
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU Richard Henderson
                   ` (4 subsequent siblings)
  8 siblings, 2 replies; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael Clark, Palmer Dabbelt, Sagar Karandikar, Bastian Koppelmann

Cc: Michael Clark <mjc@sifive.com>
Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Sagar Karandikar <sagark@eecs.berkeley.edu>
Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/riscv/cpu.h        | 1 +
 target/riscv/fpu_helper.c | 6 ++++++
 target/riscv/op_helper.c  | 3 +--
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
index 34abc383e3..f2bc243b95 100644
--- a/target/riscv/cpu.h
+++ b/target/riscv/cpu.h
@@ -265,6 +265,7 @@ void QEMU_NORETURN do_raise_exception_err(CPURISCVState *env,
                                           uint32_t exception, uintptr_t pc);
 
 target_ulong cpu_riscv_get_fflags(CPURISCVState *env);
+target_ulong cpu_riscv_get_fcsr(CPURISCVState *env);
 void cpu_riscv_set_fflags(CPURISCVState *env, target_ulong);
 
 #define TB_FLAGS_MMU_MASK  3
diff --git a/target/riscv/fpu_helper.c b/target/riscv/fpu_helper.c
index abbadead5c..41c7352115 100644
--- a/target/riscv/fpu_helper.c
+++ b/target/riscv/fpu_helper.c
@@ -37,6 +37,12 @@ target_ulong cpu_riscv_get_fflags(CPURISCVState *env)
     return hard;
 }
 
+target_ulong cpu_riscv_get_fcsr(CPURISCVState *env)
+{
+    return (cpu_riscv_get_fflags(env) << FSR_AEXC_SHIFT)
+         | (env->frm << FSR_RD_SHIFT);
+}
+
 void cpu_riscv_set_fflags(CPURISCVState *env, target_ulong hard)
 {
     int soft = 0;
diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c
index 3abf52453c..fd2d8c0a9d 100644
--- a/target/riscv/op_helper.c
+++ b/target/riscv/op_helper.c
@@ -423,8 +423,7 @@ target_ulong csr_read_helper(CPURISCVState *env, target_ulong csrno)
         return env->frm;
     case CSR_FCSR:
         validate_mstatus_fs(env, GETPC());
-        return (cpu_riscv_get_fflags(env) << FSR_AEXC_SHIFT)
-                | (env->frm << FSR_RD_SHIFT);
+        return cpu_riscv_get_fcsr(env);
     /* rdtime/rdtimeh is trapped and emulated by bbl in system mode */
 #ifdef CONFIG_USER_ONLY
     case CSR_TIME:
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
                   ` (3 preceding siblings ...)
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:52   ` Philippe Mathieu-Daudé
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 6/9] target/s390x: " Richard Henderson
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael Clark, Palmer Dabbelt, Sagar Karandikar, Bastian Koppelmann

Cc: Michael Clark <mjc@sifive.com>
Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Sagar Karandikar <sagark@eecs.berkeley.edu>
Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/riscv/cpu.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 4e5a56d4e3..4612f324c9 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -199,6 +199,10 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f,
     int i;
 
     cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "pc      ", env->pc);
+    if (flags & CPU_DUMP_FPU) {
+        cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "fcsr    ",
+                    cpu_riscv_get_fcsr(env));
+    }
 #ifndef CONFIG_USER_ONLY
     cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid);
     cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus);
@@ -219,11 +223,13 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f,
             cpu_fprintf(f, "\n");
         }
     }
-    for (i = 0; i < 32; i++) {
-        cpu_fprintf(f, " %s %016" PRIx64,
-            riscv_fpr_regnames[i], env->fpr[i]);
-        if ((i & 3) == 3) {
-            cpu_fprintf(f, "\n");
+    if (flags & CPU_DUMP_FPU) {
+        for (i = 0; i < 32; i++) {
+            cpu_fprintf(f, " %s %016" PRIx64,
+                riscv_fpr_regnames[i], env->fpr[i]);
+            if ((i & 3) == 3) {
+                cpu_fprintf(f, "\n");
+            }
         }
     }
 }
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 6/9] target/s390x: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
                   ` (4 preceding siblings ...)
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-11  6:57   ` David Hildenbrand
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 7/9] target/sparc: " Richard Henderson
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexander Graf, David Hildenbrand

Also do not dump both "fpu" and "vector" registers
as the former overlaps the latter.

Cc: Alexander Graf <agraf@suse.de>
Cc: David Hildenbrand <david@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/s390x/helper.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/target/s390x/helper.c b/target/s390x/helper.c
index e8548f340a..fd5791f134 100644
--- a/target/s390x/helper.c
+++ b/target/s390x/helper.c
@@ -327,21 +327,22 @@ void s390_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
         }
     }
 
-    for (i = 0; i < 16; i++) {
-        cpu_fprintf(f, "F%02d=%016" PRIx64, i, get_freg(env, i)->ll);
-        if ((i % 4) == 3) {
-            cpu_fprintf(f, "\n");
+    if (flags & CPU_DUMP_FPU) {
+        if (s390_has_feat(S390_FEAT_VECTOR)) {
+            for (i = 0; i < 32; i++) {
+                cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64 "%c",
+                            i, env->vregs[i][0].ll, env->vregs[i][1].ll,
+                            i % 2 ? '\n' : ' ');
+            }
         } else {
-            cpu_fprintf(f, " ");
+            for (i = 0; i < 16; i++) {
+                cpu_fprintf(f, "F%02d=%016" PRIx64 "%c",
+                            i, get_freg(env, i)->ll,
+                            (i % 4) == 3 ? '\n' : ' ');
+            }
         }
     }
 
-    for (i = 0; i < 32; i++) {
-        cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64, i,
-                    env->vregs[i][0].ll, env->vregs[i][1].ll);
-        cpu_fprintf(f, (i % 2) ? "\n" : " ");
-    }
-
 #ifndef CONFIG_USER_ONLY
     for (i = 0; i < 16; i++) {
         cpu_fprintf(f, "C%02d=%016" PRIx64, i, env->cregs[i]);
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 7/9] target/sparc: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
                   ` (5 preceding siblings ...)
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 6/9] target/s390x: " Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:54   ` Philippe Mathieu-Daudé
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 8/9] target/unicore32: " Richard Henderson
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 9/9] target/xtensa: " Richard Henderson
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Mark Cave-Ayland, Artyom Tarasenko

Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: Artyom Tarasenko <atar4qemu@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/sparc/cpu.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index ff6ed91f9a..0f090ece54 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -647,15 +647,18 @@ void sparc_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
         }
     }
 
-    for (i = 0; i < TARGET_DPREGS; i++) {
-        if ((i & 3) == 0) {
-            cpu_fprintf(f, "%%f%02d: ", i * 2);
-        }
-        cpu_fprintf(f, " %016" PRIx64, env->fpr[i].ll);
-        if ((i & 3) == 3) {
-            cpu_fprintf(f, "\n");
+    if (flags & CPU_DUMP_FPU) {
+        for (i = 0; i < TARGET_DPREGS; i++) {
+            if ((i & 3) == 0) {
+                cpu_fprintf(f, "%%f%02d: ", i * 2);
+            }
+            cpu_fprintf(f, " %016" PRIx64, env->fpr[i].ll);
+            if ((i & 3) == 3) {
+                cpu_fprintf(f, "\n");
+            }
         }
     }
+
 #ifdef TARGET_SPARC64
     cpu_fprintf(f, "pstate: %08x ccr: %02x (icc: ", env->pstate,
                 (unsigned)cpu_get_ccr(env));
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 8/9] target/unicore32: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
                   ` (6 preceding siblings ...)
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 7/9] target/sparc: " Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-13  0:54   ` Philippe Mathieu-Daudé
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 9/9] target/xtensa: " Richard Henderson
  8 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Guan Xuetao

Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/unicore32/translate.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/unicore32/translate.c b/target/unicore32/translate.c
index 5b51f2166d..63619e7d2c 100644
--- a/target/unicore32/translate.c
+++ b/target/unicore32/translate.c
@@ -2101,7 +2101,9 @@ void uc32_cpu_dump_state(CPUState *cs, FILE *f,
                 psr & (1 << 28) ? 'V' : '-',
                 cpu_mode_names[psr & 0xf]);
 
-    cpu_dump_state_ucf64(env, f, cpu_fprintf, flags);
+    if (flags & CPU_DUMP_FPU) {
+        cpu_dump_state_ucf64(env, f, cpu_fprintf, flags);
+    }
 }
 
 void restore_state_to_opc(CPUUniCore32State *env, TranslationBlock *tb,
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PATCH 9/9] target/xtensa: Honor CPU_DUMP_FPU
  2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
                   ` (7 preceding siblings ...)
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 8/9] target/unicore32: " Richard Henderson
@ 2018-05-11  3:52 ` Richard Henderson
  2018-05-11  4:46   ` Max Filippov
  2018-05-13  0:55   ` Philippe Mathieu-Daudé
  8 siblings, 2 replies; 23+ messages in thread
From: Richard Henderson @ 2018-05-11  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: Max Filippov

Cc: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/xtensa/translate.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
index 4f6d03059f..2afe395ecf 100644
--- a/target/xtensa/translate.c
+++ b/target/xtensa/translate.c
@@ -1244,7 +1244,8 @@ void xtensa_cpu_dump_state(CPUState *cs, FILE *f,
         }
     }
 
-    if (xtensa_option_enabled(env->config, XTENSA_OPTION_FP_COPROCESSOR)) {
+    if ((flags & CPU_DUMP_FPU) &&
+        xtensa_option_enabled(env->config, XTENSA_OPTION_FP_COPROCESSOR)) {
         cpu_fprintf(f, "\n");
 
         for (i = 0; i < 16; ++i) {
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 9/9] target/xtensa: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 9/9] target/xtensa: " Richard Henderson
@ 2018-05-11  4:46   ` Max Filippov
  2018-05-13  0:55   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 23+ messages in thread
From: Max Filippov @ 2018-05-11  4:46 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel

On Thu, May 10, 2018 at 8:52 PM, Richard Henderson
<richard.henderson@linaro.org> wrote:
> Cc: Max Filippov <jcmvbkbc@gmail.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  target/xtensa/translate.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Acked-by: Max Filippov <jcmvbkbc@gmail.com>

-- 
Thanks.
-- Max

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 6/9] target/s390x: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 6/9] target/s390x: " Richard Henderson
@ 2018-05-11  6:57   ` David Hildenbrand
  0 siblings, 0 replies; 23+ messages in thread
From: David Hildenbrand @ 2018-05-11  6:57 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: Alexander Graf

On 11.05.2018 05:52, Richard Henderson wrote:
> Also do not dump both "fpu" and "vector" registers
> as the former overlaps the latter.
> 
> Cc: Alexander Graf <agraf@suse.de>
> Cc: David Hildenbrand <david@redhat.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  target/s390x/helper.c | 23 ++++++++++++-----------
>  1 file changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/target/s390x/helper.c b/target/s390x/helper.c
> index e8548f340a..fd5791f134 100644
> --- a/target/s390x/helper.c
> +++ b/target/s390x/helper.c
> @@ -327,21 +327,22 @@ void s390_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
>          }
>      }
>  
> -    for (i = 0; i < 16; i++) {
> -        cpu_fprintf(f, "F%02d=%016" PRIx64, i, get_freg(env, i)->ll);
> -        if ((i % 4) == 3) {
> -            cpu_fprintf(f, "\n");
> +    if (flags & CPU_DUMP_FPU) {
> +        if (s390_has_feat(S390_FEAT_VECTOR)) {

CPU model should always be initialized at this point, so this check
actually returns the right thing.

Reviewed-by: David Hildenbrand <david@redhat.com>

> +            for (i = 0; i < 32; i++) {
> +                cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64 "%c",
> +                            i, env->vregs[i][0].ll, env->vregs[i][1].ll,
> +                            i % 2 ? '\n' : ' ');
> +            }
>          } else {
> -            cpu_fprintf(f, " ");
> +            for (i = 0; i < 16; i++) {
> +                cpu_fprintf(f, "F%02d=%016" PRIx64 "%c",
> +                            i, get_freg(env, i)->ll,
> +                            (i % 4) == 3 ? '\n' : ' ');
> +            }
>          }
>      }
>  
> -    for (i = 0; i < 32; i++) {
> -        cpu_fprintf(f, "V%02d=%016" PRIx64 "%016" PRIx64, i,
> -                    env->vregs[i][0].ll, env->vregs[i][1].ll);
> -        cpu_fprintf(f, (i % 2) ? "\n" : " ");
> -    }
> -
>  #ifndef CONFIG_USER_ONLY
>      for (i = 0; i < 16; i++) {
>          cpu_fprintf(f, "C%02d=%016" PRIx64, i, env->cregs[i]);
> 


-- 

Thanks,

David / dhildenb

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 1/9] target/alpha: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 1/9] target/alpha: " Richard Henderson
@ 2018-05-13  0:48   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:48 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  target/alpha/helper.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
> 
> diff --git a/target/alpha/helper.c b/target/alpha/helper.c
> index 8a6a948572..57e2c212b3 100644
> --- a/target/alpha/helper.c
> +++ b/target/alpha/helper.c
> @@ -442,20 +442,19 @@ void alpha_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
>      cpu_fprintf(f, "     PC  " TARGET_FMT_lx "      PS  %02x\n",
>                  env->pc, extract32(env->flags, ENV_FLAG_PS_SHIFT, 8));
>      for (i = 0; i < 31; i++) {
> -        cpu_fprintf(f, "IR%02d %s " TARGET_FMT_lx " ", i,
> -                    linux_reg_names[i], cpu_alpha_load_gr(env, i));
> -        if ((i % 3) == 2)
> -            cpu_fprintf(f, "\n");
> +        cpu_fprintf(f, "IR%02d %s " TARGET_FMT_lx "%c", i,
> +                    linux_reg_names[i], cpu_alpha_load_gr(env, i),
> +                    (i % 3) == 2 ? '\n' : ' ');
>      }
>  
>      cpu_fprintf(f, "lock_a   " TARGET_FMT_lx " lock_v   " TARGET_FMT_lx "\n",
>                  env->lock_addr, env->lock_value);
>  
> -    for (i = 0; i < 31; i++) {
> -        cpu_fprintf(f, "FIR%02d    " TARGET_FMT_lx " ", i,
> -                    *((uint64_t *)(&env->fir[i])));
> -        if ((i % 3) == 2)
> -            cpu_fprintf(f, "\n");
> +    if (flags & CPU_DUMP_FPU) {
> +        for (i = 0; i < 31; i++) {
> +            cpu_fprintf(f, "FIR%02d    %016" PRIx64 "%c", i, env->fir[i],

Cleaner :)

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> +                        (i % 3) == 2 ? '\n' : ' ');
> +        }
>      }
>      cpu_fprintf(f, "\n");
>  }
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 2/9] target/mips: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 2/9] target/mips: " Richard Henderson
@ 2018-05-13  0:49   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:49 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: Yongbok Kim, Aurelien Jarno

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Yongbok Kim <yongbok.kim@mips.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/mips/translate.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/target/mips/translate.c b/target/mips/translate.c
> index d05ee67e63..136947adc5 100644
> --- a/target/mips/translate.c
> +++ b/target/mips/translate.c
> @@ -20445,8 +20445,9 @@ void mips_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
>                  env->CP0_Config2, env->CP0_Config3);
>      cpu_fprintf(f, "    Config4 0x%08x Config5 0x%08x\n",
>                  env->CP0_Config4, env->CP0_Config5);
> -    if (env->hflags & MIPS_HFLAG_FPU)
> +    if ((flags & CPU_DUMP_FPU) && (env->hflags & MIPS_HFLAG_FPU)) {
>          fpu_dump_state(env, f, cpu_fprintf, flags);
> +    }
>  }
>  
>  void mips_tcg_init(void)
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 3/9] target/ppc: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 3/9] target/ppc: " Richard Henderson
@ 2018-05-13  0:50   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:50 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: Alexander Graf, David Gibson

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Alexander Graf <agraf@suse.de>
> Cc: David Gibson <david@gibson.dropbear.id.au>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/ppc/translate.c | 20 +++++++++++++-------
>  1 file changed, 13 insertions(+), 7 deletions(-)
> 
> diff --git a/target/ppc/translate.c b/target/ppc/translate.c
> index 2a4140f420..fd66c80cc7 100644
> --- a/target/ppc/translate.c
> +++ b/target/ppc/translate.c
> @@ -7048,14 +7048,20 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
>      }
>      cpu_fprintf(f, " ]             RES " TARGET_FMT_lx "\n",
>                  env->reserve_addr);
> -    for (i = 0; i < 32; i++) {
> -        if ((i & (RFPL - 1)) == 0)
> -            cpu_fprintf(f, "FPR%02d", i);
> -        cpu_fprintf(f, " %016" PRIx64, *((uint64_t *)&env->fpr[i]));
> -        if ((i & (RFPL - 1)) == (RFPL - 1))
> -            cpu_fprintf(f, "\n");
> +
> +    if (flags & CPU_DUMP_FPU) {
> +        for (i = 0; i < 32; i++) {
> +            if ((i & (RFPL - 1)) == 0) {
> +                cpu_fprintf(f, "FPR%02d", i);
> +            }
> +            cpu_fprintf(f, " %016" PRIx64, *((uint64_t *)&env->fpr[i]));
> +            if ((i & (RFPL - 1)) == (RFPL - 1)) {
> +                cpu_fprintf(f, "\n");
> +            }
> +        }
> +        cpu_fprintf(f, "FPSCR " TARGET_FMT_lx "\n", env->fpscr);
>      }
> -    cpu_fprintf(f, "FPSCR " TARGET_FMT_lx "\n", env->fpscr);
> +
>  #if !defined(CONFIG_USER_ONLY)
>      cpu_fprintf(f, " SRR0 " TARGET_FMT_lx "  SRR1 " TARGET_FMT_lx
>                     "    PVR " TARGET_FMT_lx " VRSAVE " TARGET_FMT_lx "\n",
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr Richard Henderson
@ 2018-05-13  0:51   ` Philippe Mathieu-Daudé
  2018-05-18  2:46   ` Michael Clark
  1 sibling, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:51 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel
  Cc: Bastian Koppelmann, Michael Clark, Palmer Dabbelt, Sagar Karandikar

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Michael Clark <mjc@sifive.com>
> Cc: Palmer Dabbelt <palmer@sifive.com>
> Cc: Sagar Karandikar <sagark@eecs.berkeley.edu>
> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/riscv/cpu.h        | 1 +
>  target/riscv/fpu_helper.c | 6 ++++++
>  target/riscv/op_helper.c  | 3 +--
>  3 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
> index 34abc383e3..f2bc243b95 100644
> --- a/target/riscv/cpu.h
> +++ b/target/riscv/cpu.h
> @@ -265,6 +265,7 @@ void QEMU_NORETURN do_raise_exception_err(CPURISCVState *env,
>                                            uint32_t exception, uintptr_t pc);
>  
>  target_ulong cpu_riscv_get_fflags(CPURISCVState *env);
> +target_ulong cpu_riscv_get_fcsr(CPURISCVState *env);
>  void cpu_riscv_set_fflags(CPURISCVState *env, target_ulong);
>  
>  #define TB_FLAGS_MMU_MASK  3
> diff --git a/target/riscv/fpu_helper.c b/target/riscv/fpu_helper.c
> index abbadead5c..41c7352115 100644
> --- a/target/riscv/fpu_helper.c
> +++ b/target/riscv/fpu_helper.c
> @@ -37,6 +37,12 @@ target_ulong cpu_riscv_get_fflags(CPURISCVState *env)
>      return hard;
>  }
>  
> +target_ulong cpu_riscv_get_fcsr(CPURISCVState *env)
> +{
> +    return (cpu_riscv_get_fflags(env) << FSR_AEXC_SHIFT)
> +         | (env->frm << FSR_RD_SHIFT);
> +}
> +
>  void cpu_riscv_set_fflags(CPURISCVState *env, target_ulong hard)
>  {
>      int soft = 0;
> diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c
> index 3abf52453c..fd2d8c0a9d 100644
> --- a/target/riscv/op_helper.c
> +++ b/target/riscv/op_helper.c
> @@ -423,8 +423,7 @@ target_ulong csr_read_helper(CPURISCVState *env, target_ulong csrno)
>          return env->frm;
>      case CSR_FCSR:
>          validate_mstatus_fs(env, GETPC());
> -        return (cpu_riscv_get_fflags(env) << FSR_AEXC_SHIFT)
> -                | (env->frm << FSR_RD_SHIFT);
> +        return cpu_riscv_get_fcsr(env);
>      /* rdtime/rdtimeh is trapped and emulated by bbl in system mode */
>  #ifdef CONFIG_USER_ONLY
>      case CSR_TIME:
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU Richard Henderson
@ 2018-05-13  0:52   ` Philippe Mathieu-Daudé
  2018-05-18  2:16     ` Michael Clark
  0 siblings, 1 reply; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:52 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel
  Cc: Bastian Koppelmann, Michael Clark, Palmer Dabbelt, Sagar Karandikar

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Michael Clark <mjc@sifive.com>
> Cc: Palmer Dabbelt <palmer@sifive.com>
> Cc: Sagar Karandikar <sagark@eecs.berkeley.edu>
> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/riscv/cpu.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> index 4e5a56d4e3..4612f324c9 100644
> --- a/target/riscv/cpu.c
> +++ b/target/riscv/cpu.c
> @@ -199,6 +199,10 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f,
>      int i;
>  
>      cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "pc      ", env->pc);
> +    if (flags & CPU_DUMP_FPU) {
> +        cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "fcsr    ",
> +                    cpu_riscv_get_fcsr(env));
> +    }
>  #ifndef CONFIG_USER_ONLY
>      cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid);
>      cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus);
> @@ -219,11 +223,13 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f,
>              cpu_fprintf(f, "\n");
>          }
>      }
> -    for (i = 0; i < 32; i++) {
> -        cpu_fprintf(f, " %s %016" PRIx64,
> -            riscv_fpr_regnames[i], env->fpr[i]);
> -        if ((i & 3) == 3) {
> -            cpu_fprintf(f, "\n");
> +    if (flags & CPU_DUMP_FPU) {
> +        for (i = 0; i < 32; i++) {
> +            cpu_fprintf(f, " %s %016" PRIx64,
> +                riscv_fpr_regnames[i], env->fpr[i]);
> +            if ((i & 3) == 3) {
> +                cpu_fprintf(f, "\n");
> +            }
>          }
>      }
>  }
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 7/9] target/sparc: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 7/9] target/sparc: " Richard Henderson
@ 2018-05-13  0:54   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:54 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: Mark Cave-Ayland, Artyom Tarasenko

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Cc: Artyom Tarasenko <atar4qemu@gmail.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/sparc/cpu.c | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
> index ff6ed91f9a..0f090ece54 100644
> --- a/target/sparc/cpu.c
> +++ b/target/sparc/cpu.c
> @@ -647,15 +647,18 @@ void sparc_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
>          }
>      }
>  
> -    for (i = 0; i < TARGET_DPREGS; i++) {
> -        if ((i & 3) == 0) {
> -            cpu_fprintf(f, "%%f%02d: ", i * 2);
> -        }
> -        cpu_fprintf(f, " %016" PRIx64, env->fpr[i].ll);
> -        if ((i & 3) == 3) {
> -            cpu_fprintf(f, "\n");
> +    if (flags & CPU_DUMP_FPU) {
> +        for (i = 0; i < TARGET_DPREGS; i++) {
> +            if ((i & 3) == 0) {
> +                cpu_fprintf(f, "%%f%02d: ", i * 2);
> +            }
> +            cpu_fprintf(f, " %016" PRIx64, env->fpr[i].ll);
> +            if ((i & 3) == 3) {
> +                cpu_fprintf(f, "\n");
> +            }
>          }
>      }
> +
>  #ifdef TARGET_SPARC64
>      cpu_fprintf(f, "pstate: %08x ccr: %02x (icc: ", env->pstate,
>                  (unsigned)cpu_get_ccr(env));
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 8/9] target/unicore32: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 8/9] target/unicore32: " Richard Henderson
@ 2018-05-13  0:54   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:54 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: Guan Xuetao

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/unicore32/translate.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/target/unicore32/translate.c b/target/unicore32/translate.c
> index 5b51f2166d..63619e7d2c 100644
> --- a/target/unicore32/translate.c
> +++ b/target/unicore32/translate.c
> @@ -2101,7 +2101,9 @@ void uc32_cpu_dump_state(CPUState *cs, FILE *f,
>                  psr & (1 << 28) ? 'V' : '-',
>                  cpu_mode_names[psr & 0xf]);
>  
> -    cpu_dump_state_ucf64(env, f, cpu_fprintf, flags);
> +    if (flags & CPU_DUMP_FPU) {
> +        cpu_dump_state_ucf64(env, f, cpu_fprintf, flags);
> +    }
>  }
>  
>  void restore_state_to_opc(CPUUniCore32State *env, TranslationBlock *tb,
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 9/9] target/xtensa: Honor CPU_DUMP_FPU
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 9/9] target/xtensa: " Richard Henderson
  2018-05-11  4:46   ` Max Filippov
@ 2018-05-13  0:55   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-05-13  0:55 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel; +Cc: Max Filippov

On 05/11/2018 12:52 AM, Richard Henderson wrote:
> Cc: Max Filippov <jcmvbkbc@gmail.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  target/xtensa/translate.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
> index 4f6d03059f..2afe395ecf 100644
> --- a/target/xtensa/translate.c
> +++ b/target/xtensa/translate.c
> @@ -1244,7 +1244,8 @@ void xtensa_cpu_dump_state(CPUState *cs, FILE *f,
>          }
>      }
>  
> -    if (xtensa_option_enabled(env->config, XTENSA_OPTION_FP_COPROCESSOR)) {
> +    if ((flags & CPU_DUMP_FPU) &&
> +        xtensa_option_enabled(env->config, XTENSA_OPTION_FP_COPROCESSOR)) {
>          cpu_fprintf(f, "\n");
>  
>          for (i = 0; i < 16; ++i) {
> 

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU
  2018-05-13  0:52   ` Philippe Mathieu-Daudé
@ 2018-05-18  2:16     ` Michael Clark
  0 siblings, 0 replies; 23+ messages in thread
From: Michael Clark @ 2018-05-18  2:16 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Richard Henderson, QEMU Developers, Bastian Koppelmann,
	Palmer Dabbelt, Sagar Karandikar

On Sun, May 13, 2018 at 12:52 PM, Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:

> On 05/11/2018 12:52 AM, Richard Henderson wrote:
> > Cc: Michael Clark <mjc@sifive.com>
> > Cc: Palmer Dabbelt <palmer@sifive.com>
> > Cc: Sagar Karandikar <sagark@eecs.berkeley.edu>
> > Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>


Reviewed-by: Michael Clark <mjc@sifive.com>


> > ---
> >  target/riscv/cpu.c | 16 +++++++++++-----
> >  1 file changed, 11 insertions(+), 5 deletions(-)
> >
> > diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> > index 4e5a56d4e3..4612f324c9 100644
> > --- a/target/riscv/cpu.c
> > +++ b/target/riscv/cpu.c
> > @@ -199,6 +199,10 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE
> *f,
> >      int i;
> >
> >      cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "pc      ", env->pc);
> > +    if (flags & CPU_DUMP_FPU) {
> > +        cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "fcsr    ",
> > +                    cpu_riscv_get_fcsr(env));
> > +    }
> >  #ifndef CONFIG_USER_ONLY
> >      cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mhartid ", env->mhartid);
> >      cpu_fprintf(f, " %s " TARGET_FMT_lx "\n", "mstatus ", env->mstatus);
> > @@ -219,11 +223,13 @@ static void riscv_cpu_dump_state(CPUState *cs,
> FILE *f,
> >              cpu_fprintf(f, "\n");
> >          }
> >      }
> > -    for (i = 0; i < 32; i++) {
> > -        cpu_fprintf(f, " %s %016" PRIx64,
> > -            riscv_fpr_regnames[i], env->fpr[i]);
> > -        if ((i & 3) == 3) {
> > -            cpu_fprintf(f, "\n");
> > +    if (flags & CPU_DUMP_FPU) {
> > +        for (i = 0; i < 32; i++) {
> > +            cpu_fprintf(f, " %s %016" PRIx64,
> > +                riscv_fpr_regnames[i], env->fpr[i]);
> > +            if ((i & 3) == 3) {
> > +                cpu_fprintf(f, "\n");
> > +            }
> >          }
> >      }
> >  }
> >
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr
  2018-05-11  3:52 ` [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr Richard Henderson
  2018-05-13  0:51   ` Philippe Mathieu-Daudé
@ 2018-05-18  2:46   ` Michael Clark
  2018-05-18  3:35     ` Richard Henderson
  1 sibling, 1 reply; 23+ messages in thread
From: Michael Clark @ 2018-05-18  2:46 UTC (permalink / raw)
  To: Richard Henderson
  Cc: QEMU Developers, Palmer Dabbelt, Sagar Karandikar, Bastian Koppelmann

On Fri, May 11, 2018 at 3:52 PM, Richard Henderson <
richard.henderson@linaro.org> wrote:

> Cc: Michael Clark <mjc@sifive.com>
> Cc: Palmer Dabbelt <palmer@sifive.com>
> Cc: Sagar Karandikar <sagark@eecs.berkeley.edu>
> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>

I'm not against this change but it conflicts with changes in the riscv
repo. I should post my patch queue to the list...

We have made a somewhat medium sized change and have unraveled two
monolithic switch statements out of csr_read_helper switch and
csr_write_helper into clearly decomposed functions for modifying control
and status registers, along with an interface to allow CPUs to hook custom
control and status registers. This was done to support atomic
read/modify/write CSRs which was not possible to achieve with the current
helpers which separately called via the csr_read_helper followed by
csr_write_helper. Given the only way to modify CSRs was via the switch
statements, we needed to move them out to provide a mechanism for CSRs that
wish to be truly atomic. e.g. 'mip'. The CSR functions are defined in The
RISC-V Instruction Set Manual Volume I: User-Level ISA Document Version 2.2
as "atomic" instructions:

- CSRRW (Atomic Read/Write CSR)
- CSRRS (Atomic Read and Set Bits in CSR)
- CSRRC (Atomic Read and Clear Bits in CSR)

We have thus changed QEMU to allow truly atomic CSR implementations. The
new implementation replaces the compiler doing compare/branch vs jump table
switch codegen for a sparse CSR address space with a single array of
function pointers. i.e. load, indirect jump. Along with this change we have
also renamed functions in target/riscv to use riscv_ prefix and added a
public interface to hook custom CSRs. The CSR changes will allow out of
tree code to hook custom CSRs without needing to change target/riscv code.

- riscv_cpu_ won over cpu_riscv_ given the number of functions conforming
with the former riscv_ prefix and the desire for consistency in target/riscv

In the riscv tree we now have riscv_csr_read(env, CSR_FCSR)
and riscv_csr_write(env, CSR_FCSR, fcsr) as the method to read and write
the composite. There is also a user in linux-user/riscv/signal.c that
should probably use the new interface. We could change
linux-user/riscv/signal.c to use your new interface however your interface
only provides a read method and no write method, so the write interface
remains in the (current) big CSR switch statement, leaving an inconsitency
between the encapsulation of read and write. We currently have the new fcsr
read and write encapsulated in static functions read_fcsr and write_fcsr in
a new csr module (which should perhaps be called csr_helper.c).

See:

- https://github.com/riscv/riscv-qemu/commits/qemu-2.13-for-upstream
-
https://github.com/riscv/riscv-qemu/commit/0783ce5ea580552b1f8e2f16a3e3cc1af19db69b
-
https://github.com/riscv/riscv-qemu/commit/fa17549fbc726e83a3c163b1534c7465147c6718


> ---
>  target/riscv/cpu.h        | 1 +
>  target/riscv/fpu_helper.c | 6 ++++++
>  target/riscv/op_helper.c  | 3 +--
>  3 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
> index 34abc383e3..f2bc243b95 100644
> --- a/target/riscv/cpu.h
> +++ b/target/riscv/cpu.h
> @@ -265,6 +265,7 @@ void QEMU_NORETURN do_raise_exception_err(CPURISCVState
> *env,
>                                            uint32_t exception, uintptr_t
> pc);
>
>  target_ulong cpu_riscv_get_fflags(CPURISCVState *env);
> +target_ulong cpu_riscv_get_fcsr(CPURISCVState *env);
>  void cpu_riscv_set_fflags(CPURISCVState *env, target_ulong);
>
>  #define TB_FLAGS_MMU_MASK  3
> diff --git a/target/riscv/fpu_helper.c b/target/riscv/fpu_helper.c
> index abbadead5c..41c7352115 100644
> --- a/target/riscv/fpu_helper.c
> +++ b/target/riscv/fpu_helper.c
> @@ -37,6 +37,12 @@ target_ulong cpu_riscv_get_fflags(CPURISCVState *env)
>      return hard;
>  }
>
> +target_ulong cpu_riscv_get_fcsr(CPURISCVState *env)
> +{
> +    return (cpu_riscv_get_fflags(env) << FSR_AEXC_SHIFT)
> +         | (env->frm << FSR_RD_SHIFT);
> +}
> +
>  void cpu_riscv_set_fflags(CPURISCVState *env, target_ulong hard)
>  {
>      int soft = 0;
> diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c
> index 3abf52453c..fd2d8c0a9d 100644
> --- a/target/riscv/op_helper.c
> +++ b/target/riscv/op_helper.c
> @@ -423,8 +423,7 @@ target_ulong csr_read_helper(CPURISCVState *env,
> target_ulong csrno)
>          return env->frm;
>      case CSR_FCSR:
>          validate_mstatus_fs(env, GETPC());
> -        return (cpu_riscv_get_fflags(env) << FSR_AEXC_SHIFT)
> -                | (env->frm << FSR_RD_SHIFT);
> +        return cpu_riscv_get_fcsr(env);
>      /* rdtime/rdtimeh is trapped and emulated by bbl in system mode */
>  #ifdef CONFIG_USER_ONLY
>      case CSR_TIME:
> --
> 2.17.0
>
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr
  2018-05-18  2:46   ` Michael Clark
@ 2018-05-18  3:35     ` Richard Henderson
  0 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2018-05-18  3:35 UTC (permalink / raw)
  To: Michael Clark
  Cc: QEMU Developers, Palmer Dabbelt, Sagar Karandikar, Bastian Koppelmann

On 05/17/2018 07:46 PM, Michael Clark wrote:
> 
> 
> On Fri, May 11, 2018 at 3:52 PM, Richard Henderson
> <richard.henderson@linaro.org <mailto:richard.henderson@linaro.org>> wrote:
> 
>     Cc: Michael Clark <mjc@sifive.com <mailto:mjc@sifive.com>>
>     Cc: Palmer Dabbelt <palmer@sifive.com <mailto:palmer@sifive.com>>
>     Cc: Sagar Karandikar <sagark@eecs.berkeley.edu
>     <mailto:sagark@eecs.berkeley.edu>>
>     Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de
>     <mailto:kbastian@mail.uni-paderborn.de>>
>     Signed-off-by: Richard Henderson <richard.henderson@linaro.org
>     <mailto:richard.henderson@linaro.org>>
> 
> 
> I'm not against this change but it conflicts with changes in the riscv repo. I
> should post my patch queue to the list...

Ok, I'll drop this for now, and the dump of the FCSR in the next patch.
To be revisited once your csr reorg is upstream...


r~

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2018-05-18  3:35 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-11  3:52 [Qemu-devel] [PATCH 0/9] Honor CPU_DUMP_FPU Richard Henderson
2018-05-11  3:52 ` [Qemu-devel] [PATCH 1/9] target/alpha: " Richard Henderson
2018-05-13  0:48   ` Philippe Mathieu-Daudé
2018-05-11  3:52 ` [Qemu-devel] [PATCH 2/9] target/mips: " Richard Henderson
2018-05-13  0:49   ` Philippe Mathieu-Daudé
2018-05-11  3:52 ` [Qemu-devel] [PATCH 3/9] target/ppc: " Richard Henderson
2018-05-13  0:50   ` Philippe Mathieu-Daudé
2018-05-11  3:52 ` [Qemu-devel] [PATCH 4/9] target/riscv: Introduce cpu_riscv_get_fcsr Richard Henderson
2018-05-13  0:51   ` Philippe Mathieu-Daudé
2018-05-18  2:46   ` Michael Clark
2018-05-18  3:35     ` Richard Henderson
2018-05-11  3:52 ` [Qemu-devel] [PATCH 5/9] target/riscv: Honor CPU_DUMP_FPU Richard Henderson
2018-05-13  0:52   ` Philippe Mathieu-Daudé
2018-05-18  2:16     ` Michael Clark
2018-05-11  3:52 ` [Qemu-devel] [PATCH 6/9] target/s390x: " Richard Henderson
2018-05-11  6:57   ` David Hildenbrand
2018-05-11  3:52 ` [Qemu-devel] [PATCH 7/9] target/sparc: " Richard Henderson
2018-05-13  0:54   ` Philippe Mathieu-Daudé
2018-05-11  3:52 ` [Qemu-devel] [PATCH 8/9] target/unicore32: " Richard Henderson
2018-05-13  0:54   ` Philippe Mathieu-Daudé
2018-05-11  3:52 ` [Qemu-devel] [PATCH 9/9] target/xtensa: " Richard Henderson
2018-05-11  4:46   ` Max Filippov
2018-05-13  0:55   ` Philippe Mathieu-Daudé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.