gdbstub: Introduce gdb_get_float32() to get 32-bit float registers

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: a010bdbe71 ("extend GByteArray to read register helpers")
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20200414163853.12164-2-philmd@redhat.com>
Message-Id: <20200414200631.12799-14-alex.bennee@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2020-04-14 21:06:27 +01:00 committed by Alex Bennée
parent 7b8c1527ae
commit 377f8f08be
2 changed files with 11 additions and 4 deletions

View File

@ -125,6 +125,15 @@ 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)
{
guint oldlen = array->len;

View File

@ -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: