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:
parent
7b8c1527ae
commit
377f8f08be
@ -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;
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user