Message ID | 20211014223234.127012-3-matheus.ferst@eldorado.org.br |
---|---|
State | New |
Headers | show |
Series | Fix incorrect accesses to XER | expand |
On 10/14/21 3:32 PM, matheus.ferst@eldorado.org.br wrote: > From: Matheus Ferst<matheus.ferst@eldorado.org.br> > > The value of XER is split in multiple fields of CPUPPCState, like > env->xer and env->so. To get/set the whole register from gdb, we should > use cpu_read_xer/cpu_write_xer. > > Fixes: da91a00f191f ("target-ppc: Split out SO, OV, CA fields from XER") > Signed-off-by: Matheus Ferst<matheus.ferst@eldorado.org.br> > --- > target/ppc/gdbstub.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On Thu, Oct 14, 2021 at 07:32:32PM -0300, matheus.ferst@eldorado.org.br wrote: > From: Matheus Ferst <matheus.ferst@eldorado.org.br> > > The value of XER is split in multiple fields of CPUPPCState, like > env->xer and env->so. To get/set the whole register from gdb, we should > use cpu_read_xer/cpu_write_xer. > > Fixes: da91a00f191f ("target-ppc: Split out SO, OV, CA fields from XER") > Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Applied to ppc-for-6.2. > --- > target/ppc/gdbstub.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c > index 1808a150e4..105c2f7dd1 100644 > --- a/target/ppc/gdbstub.c > +++ b/target/ppc/gdbstub.c > @@ -159,7 +159,7 @@ int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n) > gdb_get_regl(buf, env->ctr); > break; > case 69: > - gdb_get_reg32(buf, env->xer); > + gdb_get_reg32(buf, cpu_read_xer(env)); > break; > case 70: > gdb_get_reg32(buf, env->fpscr); > @@ -217,7 +217,7 @@ int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n) > gdb_get_reg64(buf, env->ctr); > break; > case 69 + 32: > - gdb_get_reg32(buf, env->xer); > + gdb_get_reg32(buf, cpu_read_xer(env)); > break; > case 70 + 32: > gdb_get_reg64(buf, env->fpscr); > @@ -269,7 +269,7 @@ int ppc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) > env->ctr = ldtul_p(mem_buf); > break; > case 69: > - env->xer = ldl_p(mem_buf); > + cpu_write_xer(env, ldl_p(mem_buf)); > break; > case 70: > /* fpscr */ > @@ -319,7 +319,7 @@ int ppc_cpu_gdb_write_register_apple(CPUState *cs, uint8_t *mem_buf, int n) > env->ctr = ldq_p(mem_buf); > break; > case 69 + 32: > - env->xer = ldl_p(mem_buf); > + cpu_write_xer(env, ldl_p(mem_buf)); > break; > case 70 + 32: > /* fpscr */
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c index 1808a150e4..105c2f7dd1 100644 --- a/target/ppc/gdbstub.c +++ b/target/ppc/gdbstub.c @@ -159,7 +159,7 @@ int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n) gdb_get_regl(buf, env->ctr); break; case 69: - gdb_get_reg32(buf, env->xer); + gdb_get_reg32(buf, cpu_read_xer(env)); break; case 70: gdb_get_reg32(buf, env->fpscr); @@ -217,7 +217,7 @@ int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n) gdb_get_reg64(buf, env->ctr); break; case 69 + 32: - gdb_get_reg32(buf, env->xer); + gdb_get_reg32(buf, cpu_read_xer(env)); break; case 70 + 32: gdb_get_reg64(buf, env->fpscr); @@ -269,7 +269,7 @@ int ppc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) env->ctr = ldtul_p(mem_buf); break; case 69: - env->xer = ldl_p(mem_buf); + cpu_write_xer(env, ldl_p(mem_buf)); break; case 70: /* fpscr */ @@ -319,7 +319,7 @@ int ppc_cpu_gdb_write_register_apple(CPUState *cs, uint8_t *mem_buf, int n) env->ctr = ldq_p(mem_buf); break; case 69 + 32: - env->xer = ldl_p(mem_buf); + cpu_write_xer(env, ldl_p(mem_buf)); break; case 70 + 32: /* fpscr */