qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 25/53] target/sparc: convert to use format_state instead o


From: Mark Cave-Ayland
Subject: Re: [PATCH v2 25/53] target/sparc: convert to use format_state instead of dump_state
Date: Thu, 16 Sep 2021 11:53:05 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

On 14/09/2021 15:20, Daniel P. Berrangé wrote:

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
  target/sparc/cpu.c | 85 +++++++++++++++++++++++++---------------------
  target/sparc/cpu.h |  2 +-
  2 files changed, 47 insertions(+), 40 deletions(-)

diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index da6b30ec74..9346a79239 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -597,11 +597,11 @@ void sparc_cpu_list(void)
                  "fpu_version mmu_version nwindows\n");
  }
-static void cpu_print_cc(FILE *f, uint32_t cc)
+static void cpu_print_cc(GString *buf, uint32_t cc)
  {
-    qemu_fprintf(f, "%c%c%c%c", cc & PSR_NEG ? 'N' : '-',
-                 cc & PSR_ZERO ? 'Z' : '-', cc & PSR_OVF ? 'V' : '-',
-                 cc & PSR_CARRY ? 'C' : '-');
+    g_string_append_printf(buf, "%c%c%c%c", cc & PSR_NEG ? 'N' : '-',
+                           cc & PSR_ZERO ? 'Z' : '-', cc & PSR_OVF ? 'V' : '-',
+                           cc & PSR_CARRY ? 'C' : '-');
  }
#ifdef TARGET_SPARC64
@@ -610,34 +610,36 @@ static void cpu_print_cc(FILE *f, uint32_t cc)
  #define REGS_PER_LINE 8
  #endif
-void sparc_cpu_dump_state(CPUState *cs, FILE *f, int flags)
+void sparc_cpu_format_state(CPUState *cs, GString *buf, int flags)
  {
      SPARCCPU *cpu = SPARC_CPU(cs);
      CPUSPARCState *env = &cpu->env;
      int i, x;
- qemu_fprintf(f, "pc: " TARGET_FMT_lx " npc: " TARGET_FMT_lx "\n", env->pc,
-                 env->npc);
+    g_string_append_printf(buf,
+                           "pc: " TARGET_FMT_lx "  npc: " TARGET_FMT_lx "\n",
+                           env->pc, env->npc);
for (i = 0; i < 8; i++) {
          if (i % REGS_PER_LINE == 0) {
-            qemu_fprintf(f, "%%g%d-%d:", i, i + REGS_PER_LINE - 1);
+            g_string_append_printf(buf, "%%g%d-%d:", i, i + REGS_PER_LINE - 1);
          }
-        qemu_fprintf(f, " " TARGET_FMT_lx, env->gregs[i]);
+        g_string_append_printf(buf, " " TARGET_FMT_lx, env->gregs[i]);
          if (i % REGS_PER_LINE == REGS_PER_LINE - 1) {
-            qemu_fprintf(f, "\n");
+            g_string_append_printf(buf, "\n");
          }
      }
      for (x = 0; x < 3; x++) {
          for (i = 0; i < 8; i++) {
              if (i % REGS_PER_LINE == 0) {
-                qemu_fprintf(f, "%%%c%d-%d: ",
+                g_string_append_printf(buf, "%%%c%d-%d: ",
                               x == 0 ? 'o' : (x == 1 ? 'l' : 'i'),
                               i, i + REGS_PER_LINE - 1);
              }
-            qemu_fprintf(f, TARGET_FMT_lx " ", env->regwptr[i + x * 8]);
+            g_string_append_printf(buf, TARGET_FMT_lx " ",
+                                   env->regwptr[i + x * 8]);
              if (i % REGS_PER_LINE == REGS_PER_LINE - 1) {
-                qemu_fprintf(f, "\n");
+                g_string_append_printf(buf, "\n");
              }
          }
      }
@@ -645,42 +647,47 @@ void sparc_cpu_dump_state(CPUState *cs, FILE *f, int 
flags)
      if (flags & CPU_DUMP_FPU) {
          for (i = 0; i < TARGET_DPREGS; i++) {
              if ((i & 3) == 0) {
-                qemu_fprintf(f, "%%f%02d: ", i * 2);
+                g_string_append_printf(buf, "%%f%02d: ", i * 2);
              }
-            qemu_fprintf(f, " %016" PRIx64, env->fpr[i].ll);
+            g_string_append_printf(buf, " %016" PRIx64, env->fpr[i].ll);
              if ((i & 3) == 3) {
-                qemu_fprintf(f, "\n");
+                g_string_append_printf(buf, "\n");
              }
          }
      }
#ifdef TARGET_SPARC64
-    qemu_fprintf(f, "pstate: %08x ccr: %02x (icc: ", env->pstate,
+    g_string_append_printf(buf, "pstate: %08x ccr: %02x (icc: ", env->pstate,
                   (unsigned)cpu_get_ccr(env));
-    cpu_print_cc(f, cpu_get_ccr(env) << PSR_CARRY_SHIFT);
-    qemu_fprintf(f, " xcc: ");
-    cpu_print_cc(f, cpu_get_ccr(env) << (PSR_CARRY_SHIFT - 4));
-    qemu_fprintf(f, ") asi: %02x tl: %d pil: %x gl: %d\n", env->asi, env->tl,
-                 env->psrpil, env->gl);
-    qemu_fprintf(f, "tbr: " TARGET_FMT_lx " hpstate: " TARGET_FMT_lx " htba: "
-                 TARGET_FMT_lx "\n", env->tbr, env->hpstate, env->htba);
-    qemu_fprintf(f, "cansave: %d canrestore: %d otherwin: %d wstate: %d "
-                 "cleanwin: %d cwp: %d\n",
-                 env->cansave, env->canrestore, env->otherwin, env->wstate,
-                 env->cleanwin, env->nwindows - 1 - env->cwp);
-    qemu_fprintf(f, "fsr: " TARGET_FMT_lx " y: " TARGET_FMT_lx " fprs: "
-                 TARGET_FMT_lx "\n", env->fsr, env->y, env->fprs);
+    cpu_print_cc(buf, cpu_get_ccr(env) << PSR_CARRY_SHIFT);
+    g_string_append_printf(buf, " xcc: ");
+    cpu_print_cc(buf, cpu_get_ccr(env) << (PSR_CARRY_SHIFT - 4));
+    g_string_append_printf(buf, ") asi: %02x tl: %d pil: %x gl: %d\n",
+                           env->asi, env->tl, env->psrpil, env->gl);
+    g_string_append_printf(buf, "tbr: " TARGET_FMT_lx " hpstate: "
+                           TARGET_FMT_lx " htba: " TARGET_FMT_lx "\n",
+                           env->tbr, env->hpstate, env->htba);
+    g_string_append_printf(buf, "cansave: %d canrestore: %d "
+                           "otherwin: %d wstate: %d "
+                           "cleanwin: %d cwp: %d\n",
+                           env->cansave, env->canrestore,
+                           env->otherwin, env->wstate,
+                           env->cleanwin, env->nwindows - 1 - env->cwp);
+    g_string_append_printf(buf, "fsr: " TARGET_FMT_lx " y: "
+                           TARGET_FMT_lx " fprs: " TARGET_FMT_lx "\n",
+                           env->fsr, env->y, env->fprs);
#else
-    qemu_fprintf(f, "psr: %08x (icc: ", cpu_get_psr(env));
-    cpu_print_cc(f, cpu_get_psr(env));
-    qemu_fprintf(f, " SPE: %c%c%c) wim: %08x\n", env->psrs ? 'S' : '-',
-                 env->psrps ? 'P' : '-', env->psret ? 'E' : '-',
-                 env->wim);
-    qemu_fprintf(f, "fsr: " TARGET_FMT_lx " y: " TARGET_FMT_lx "\n",
-                 env->fsr, env->y);
+    g_string_append_printf(buf, "psr: %08x (icc: ", cpu_get_psr(env));
+    cpu_print_cc(buf, cpu_get_psr(env));
+    g_string_append_printf(buf, " SPE: %c%c%c) wim: %08x\n",
+                           env->psrs ? 'S' : '-',
+                           env->psrps ? 'P' : '-', env->psret ? 'E' : '-',
+                           env->wim);
+    g_string_append_printf(buf, "fsr: " TARGET_FMT_lx " y: " TARGET_FMT_lx 
"\n",
+                           env->fsr, env->y);
  #endif
-    qemu_fprintf(f, "\n");
+    g_string_append_printf(buf, "\n");
  }
static void sparc_cpu_set_pc(CPUState *cs, vaddr value)
@@ -889,7 +896,7 @@ static void sparc_cpu_class_init(ObjectClass *oc, void 
*data)
      cc->class_by_name = sparc_cpu_class_by_name;
      cc->parse_features = sparc_cpu_parse_features;
      cc->has_work = sparc_cpu_has_work;
-    cc->dump_state = sparc_cpu_dump_state;
+    cc->format_state = sparc_cpu_format_state;
  #if !defined(TARGET_SPARC64) && !defined(CONFIG_USER_ONLY)
      cc->memory_rw_debug = sparc_cpu_memory_rw_debug;
  #endif
diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h
index ff8ae73002..65a01a7884 100644
--- a/target/sparc/cpu.h
+++ b/target/sparc/cpu.h
@@ -571,7 +571,7 @@ extern const VMStateDescription vmstate_sparc_cpu;
  #endif
void sparc_cpu_do_interrupt(CPUState *cpu);
-void sparc_cpu_dump_state(CPUState *cpu, FILE *f, int flags);
+void sparc_cpu_format_state(CPUState *cpu, GString *buf, int flags);
  hwaddr sparc_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
  int sparc_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
  int sparc_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


ATB,

Mark.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]