Skip to content

Commit

Permalink
gdbstub: Introduce gdb_get_float32() to get 32-bit float registers
Browse files Browse the repository at this point in the history
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: a010bdb ("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>
  • Loading branch information
philmd authored and stsquad committed Apr 15, 2020
1 parent 7b8c152 commit 377f8f0
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
9 changes: 9 additions & 0 deletions include/exec/gdbstub.h
Expand Up @@ -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;
Expand Down
6 changes: 2 additions & 4 deletions target/sh4/gdbstub.c
Expand Up @@ -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:
Expand Down

0 comments on commit 377f8f0

Please sign in to comment.