Message ID | 20191130084602.10818-8-alex.bennee@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | gdbstub refactor and SVE support | expand |
Le 30/11/2019 à 09:45, Alex Bennée a écrit : > This is cleaner than poking memory directly and will make later > clean-ups easier. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/m68k/helper.c | 29 +++++++++++------------------ > 1 file changed, 11 insertions(+), 18 deletions(-) > > diff --git a/target/m68k/helper.c b/target/m68k/helper.c > index ae766a6cb0b..70b0c0b5076 100644 > --- a/target/m68k/helper.c > +++ b/target/m68k/helper.c > @@ -72,19 +72,15 @@ static int cf_fpu_gdb_get_reg(CPUM68KState *env, uint8_t *mem_buf, int n) > { > if (n < 8) { > float_status s; > - stfq_p(mem_buf, floatx80_to_float64(env->fregs[n].d, &s)); > - return 8; > + return gdb_get_reg64(buf, floatx80_to_float64(env->fregs[n].d, &s)); Where is coming from "buf"? We were using "mem_buf". > } > switch (n) { > case 8: /* fpcontrol */ > - stl_be_p(mem_buf, env->fpcr); > - return 4; > + return gdb_get_reg32(buf, env->fpcr); > case 9: /* fpstatus */ > - stl_be_p(mem_buf, env->fpsr); > - return 4; > + return gdb_get_reg32(buf, env->fpsr); > case 10: /* fpiar, not implemented */ > - memset(mem_buf, 0, 4); > - return 4; > + return gdb_get_reg32(buf, 0); > } > return 0; > } > @@ -112,21 +108,18 @@ static int cf_fpu_gdb_set_reg(CPUM68KState *env, uint8_t *mem_buf, int n) > static int m68k_fpu_gdb_get_reg(CPUM68KState *env, uint8_t *mem_buf, int n) > { > if (n < 8) { > - stw_be_p(mem_buf, env->fregs[n].l.upper); > - memset(mem_buf + 2, 0, 2); > - stq_be_p(mem_buf + 4, env->fregs[n].l.lower); > - return 12; > + int len = gdb_get_reg16(buf, env->fregs[n].l.upper); > + len += gdb_get_reg16(buf, 0); len += gdb_get_reg16(buf + len, ... > + len += gdb_get_reg64(buf, env->fregs[n].l.lower); len += gdb_get_reg64(buf + len, ... > + return len; > } > switch (n) { > case 8: /* fpcontrol */ > - stl_be_p(mem_buf, env->fpcr); > - return 4; > + return gdb_get_reg32(buf, env->fpcr); > case 9: /* fpstatus */ > - stl_be_p(mem_buf, env->fpsr); > - return 4; > + return gdb_get_reg32(buf, env->fpsr); > case 10: /* fpiar, not implemented */ > - memset(mem_buf, 0, 4); > - return 4; > + return gdb_get_reg32(buf, 0); > } > return 0; > } > Thanks, Laurent
diff --git a/target/m68k/helper.c b/target/m68k/helper.c index ae766a6cb0b..70b0c0b5076 100644 --- a/target/m68k/helper.c +++ b/target/m68k/helper.c @@ -72,19 +72,15 @@ static int cf_fpu_gdb_get_reg(CPUM68KState *env, uint8_t *mem_buf, int n) { if (n < 8) { float_status s; - stfq_p(mem_buf, floatx80_to_float64(env->fregs[n].d, &s)); - return 8; + return gdb_get_reg64(buf, floatx80_to_float64(env->fregs[n].d, &s)); } switch (n) { case 8: /* fpcontrol */ - stl_be_p(mem_buf, env->fpcr); - return 4; + return gdb_get_reg32(buf, env->fpcr); case 9: /* fpstatus */ - stl_be_p(mem_buf, env->fpsr); - return 4; + return gdb_get_reg32(buf, env->fpsr); case 10: /* fpiar, not implemented */ - memset(mem_buf, 0, 4); - return 4; + return gdb_get_reg32(buf, 0); } return 0; } @@ -112,21 +108,18 @@ static int cf_fpu_gdb_set_reg(CPUM68KState *env, uint8_t *mem_buf, int n) static int m68k_fpu_gdb_get_reg(CPUM68KState *env, uint8_t *mem_buf, int n) { if (n < 8) { - stw_be_p(mem_buf, env->fregs[n].l.upper); - memset(mem_buf + 2, 0, 2); - stq_be_p(mem_buf + 4, env->fregs[n].l.lower); - return 12; + int len = gdb_get_reg16(buf, env->fregs[n].l.upper); + len += gdb_get_reg16(buf, 0); + len += gdb_get_reg64(buf, env->fregs[n].l.lower); + return len; } switch (n) { case 8: /* fpcontrol */ - stl_be_p(mem_buf, env->fpcr); - return 4; + return gdb_get_reg32(buf, env->fpcr); case 9: /* fpstatus */ - stl_be_p(mem_buf, env->fpsr); - return 4; + return gdb_get_reg32(buf, env->fpsr); case 10: /* fpiar, not implemented */ - memset(mem_buf, 0, 4); - return 4; + return gdb_get_reg32(buf, 0); } return 0; }