All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers
@ 2020-04-14 16:38 Philippe Mathieu-Daudé
  2020-04-14 16:38 ` [PATCH-for-5.0 v3 1/2] gdbstub: Introduce gdb_get_float32() to get 32-bit float registers Philippe Mathieu-Daudé
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-04-14 16:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé,
	Richard Henderson, Laurent Vivier, qemu-ppc, Alex Bennée,
	Aurelien Jarno, David Gibson

Fixes for GByteArray (commits 462474d760c & a010bdbe719).

Based-on: <20200414102427.7459-1-philmd@redhat.com>

Philippe Mathieu-Daudé (2):
  gdbstub: Introduce gdb_get_float32() to get 32-bit float registers
  gdbstub: Introduce gdb_get_float64() to get 64-bit float registers

 include/exec/gdbstub.h          | 20 ++++++++++++++++++++
 target/m68k/helper.c            |  3 ++-
 target/ppc/gdbstub.c            |  4 ++--
 target/ppc/translate_init.inc.c |  2 +-
 target/sh4/gdbstub.c            |  6 ++----
 5 files changed, 27 insertions(+), 8 deletions(-)

-- 
2.21.1



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

* [PATCH-for-5.0 v3 1/2] gdbstub: Introduce gdb_get_float32() to get 32-bit float registers
  2020-04-14 16:38 [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Philippe Mathieu-Daudé
@ 2020-04-14 16:38 ` Philippe Mathieu-Daudé
  2020-04-14 16:38 ` [PATCH-for-5.0 v3 2/2] gdbstub: Introduce gdb_get_float64() to get 64-bit " Philippe Mathieu-Daudé
  2020-04-14 19:34 ` [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Alex Bennée
  2 siblings, 0 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-04-14 16:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé,
	Richard Henderson, Laurent Vivier, qemu-ppc, Alex Bennée,
	Aurelien Jarno, David Gibson

Since we now use a GByteArray, we can not use stfl_p() directly.
Introduce the gdb_get_float32() helper to load a float32 register.

Fixes: a010bdbe719 ("extend GByteArray to read register helpers")
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v3: Use buf[sizeof(CPU_FloatU)] (rth)
---
 include/exec/gdbstub.h | 10 ++++++++++
 target/sh4/gdbstub.c   |  6 ++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index b52d9933ee..0891d93de2 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -125,6 +125,16 @@ static inline int gdb_get_reg128(GByteArray *buf, uint64_t val_hi,
     return 16;
 }
 
+static inline int gdb_get_float32(GByteArray *array, float32 val)
+{
+    uint8_t buf[sizeof(CPU_FloatU)];
+
+    stfl_p(buf, val);
+    g_byte_array_append(array, buf, sizeof(buf));
+
+    return sizeof(buf);
+}
+
 static inline int gdb_get_zeroes(GByteArray *array, size_t len)
 {
     for (size_t i = 0; i < len; i++) {
diff --git a/target/sh4/gdbstub.c b/target/sh4/gdbstub.c
index 49fc4a0cc6..34ad3ca050 100644
--- a/target/sh4/gdbstub.c
+++ b/target/sh4/gdbstub.c
@@ -58,11 +58,9 @@ int superh_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
         return gdb_get_regl(mem_buf, env->fpscr);
     case 25 ... 40:
         if (env->fpscr & FPSCR_FR) {
-            stfl_p(mem_buf, env->fregs[n - 9]);
-        } else {
-            stfl_p(mem_buf, env->fregs[n - 25]);
+            return gdb_get_float32(mem_buf, env->fregs[n - 9]);
         }
-        return 4;
+        return gdb_get_float32(mem_buf, env->fregs[n - 25]);
     case 41:
         return gdb_get_regl(mem_buf, env->ssr);
     case 42:
-- 
2.21.1



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

* [PATCH-for-5.0 v3 2/2] gdbstub: Introduce gdb_get_float64() to get 64-bit float registers
  2020-04-14 16:38 [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Philippe Mathieu-Daudé
  2020-04-14 16:38 ` [PATCH-for-5.0 v3 1/2] gdbstub: Introduce gdb_get_float32() to get 32-bit float registers Philippe Mathieu-Daudé
@ 2020-04-14 16:38 ` Philippe Mathieu-Daudé
  2020-04-14 19:34 ` [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Alex Bennée
  2 siblings, 0 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-04-14 16:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Philippe Mathieu-Daudé,
	Richard Henderson, Laurent Vivier, qemu-ppc, Alex Bennée,
	Aurelien Jarno, David Gibson

When converted to use GByteArray in commits 462474d760c and
a010bdbe719, the call to stfq_p() was removed. This call
serialize a float.
Since we now use a GByteArray, we can not use stfq_p() directly.
Introduce the gdb_get_float64() helper to load a float64 register.

Fixes: 462474d760c ("target/m68k: use gdb_get_reg helpers")
Fixes: a010bdbe719 ("extend GByteArray to read register helpers")
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v3: Use buf[sizeof(CPU_DoubleU)] (rth)
---
 include/exec/gdbstub.h          | 10 ++++++++++
 target/m68k/helper.c            |  3 ++-
 target/ppc/gdbstub.c            |  4 ++--
 target/ppc/translate_init.inc.c |  2 +-
 4 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/include/exec/gdbstub.h b/include/exec/gdbstub.h
index 0891d93de2..262181d8d6 100644
--- a/include/exec/gdbstub.h
+++ b/include/exec/gdbstub.h
@@ -135,6 +135,16 @@ static inline int gdb_get_float32(GByteArray *array, float32 val)
     return sizeof(buf);
 }
 
+static inline int gdb_get_float64(GByteArray *array, float64 val)
+{
+    uint8_t buf[sizeof(CPU_DoubleU)];
+
+    stfq_p(buf, val);
+    g_byte_array_append(array, buf, sizeof(buf));
+
+    return sizeof(buf);
+}
+
 static inline int gdb_get_zeroes(GByteArray *array, size_t len)
 {
     for (size_t i = 0; i < len; i++) {
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index 014657c637..cc80b48dda 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -72,7 +72,8 @@ static int cf_fpu_gdb_get_reg(CPUM68KState *env, GByteArray *mem_buf, int n)
 {
     if (n < 8) {
         float_status s;
-        return gdb_get_reg64(mem_buf, floatx80_to_float64(env->fregs[n].d, &s));
+        return gdb_get_float64(mem_buf,
+                               floatx80_to_float64(env->fregs[n].d, &s));
     }
     switch (n) {
     case 8: /* fpcontrol */
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
index eb362dd9ae..5c11c88b2a 100644
--- a/target/ppc/gdbstub.c
+++ b/target/ppc/gdbstub.c
@@ -130,7 +130,7 @@ int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n)
         gdb_get_regl(buf, env->gpr[n]);
     } else if (n < 64) {
         /* fprs */
-        gdb_get_reg64(buf, *cpu_fpr_ptr(env, n - 32));
+        gdb_get_float64(buf, *cpu_fpr_ptr(env, n - 32));
     } else {
         switch (n) {
         case 64:
@@ -184,7 +184,7 @@ int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n)
         gdb_get_reg64(buf, env->gpr[n]);
     } else if (n < 64) {
         /* fprs */
-        gdb_get_reg64(buf, *cpu_fpr_ptr(env, n - 32));
+        gdb_get_float64(buf, *cpu_fpr_ptr(env, n - 32));
     } else if (n < 96) {
         /* Altivec */
         gdb_get_reg64(buf, n - 64);
diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c
index e853164a86..d825cb5975 100644
--- a/target/ppc/translate_init.inc.c
+++ b/target/ppc/translate_init.inc.c
@@ -9881,7 +9881,7 @@ static int gdb_get_float_reg(CPUPPCState *env, GByteArray *buf, int n)
 {
     uint8_t *mem_buf;
     if (n < 32) {
-        gdb_get_reg64(buf, *cpu_fpr_ptr(env, n));
+        gdb_get_float64(buf, *cpu_fpr_ptr(env, n));
         mem_buf = gdb_get_reg_ptr(buf, 8);
         ppc_maybe_bswap_register(env, mem_buf, 8);
         return 8;
-- 
2.21.1



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

* Re: [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers
  2020-04-14 16:38 [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Philippe Mathieu-Daudé
  2020-04-14 16:38 ` [PATCH-for-5.0 v3 1/2] gdbstub: Introduce gdb_get_float32() to get 32-bit float registers Philippe Mathieu-Daudé
  2020-04-14 16:38 ` [PATCH-for-5.0 v3 2/2] gdbstub: Introduce gdb_get_float64() to get 64-bit " Philippe Mathieu-Daudé
@ 2020-04-14 19:34 ` Alex Bennée
  2 siblings, 0 replies; 4+ messages in thread
From: Alex Bennée @ 2020-04-14 19:34 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Peter Maydell, Richard Henderson, qemu-devel, Laurent Vivier,
	qemu-ppc, Aurelien Jarno, David Gibson


Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> Fixes for GByteArray (commits 462474d760c & a010bdbe719).
>
> Based-on: <20200414102427.7459-1-philmd@redhat.com>
>
> Philippe Mathieu-Daudé (2):
>   gdbstub: Introduce gdb_get_float32() to get 32-bit float registers
>   gdbstub: Introduce gdb_get_float64() to get 64-bit float registers
>
>  include/exec/gdbstub.h          | 20 ++++++++++++++++++++
>  target/m68k/helper.c            |  3 ++-
>  target/ppc/gdbstub.c            |  4 ++--
>  target/ppc/translate_init.inc.c |  2 +-
>  target/sh4/gdbstub.c            |  6 ++----
>  5 files changed, 27 insertions(+), 8 deletions(-)

Queued to for-5.0/more-random-fixes, thanks.

-- 
Alex Bennée


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

end of thread, other threads:[~2020-04-14 19:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-14 16:38 [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Philippe Mathieu-Daudé
2020-04-14 16:38 ` [PATCH-for-5.0 v3 1/2] gdbstub: Introduce gdb_get_float32() to get 32-bit float registers Philippe Mathieu-Daudé
2020-04-14 16:38 ` [PATCH-for-5.0 v3 2/2] gdbstub: Introduce gdb_get_float64() to get 64-bit " Philippe Mathieu-Daudé
2020-04-14 19:34 ` [PATCH-for-5.0 v3 0/2] gdbstub: Introduce gdb_get_float32/gdb_get_float64 helpers Alex Bennée

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.