Message ID | 20230531012313.19891-2-npiggin@gmail.com |
---|---|
State | New |
Headers | show |
Series | target/ppc: initial SMT support in TCG | expand |
On 31/5/23 03:23, Nicholas Piggin wrote: > Make sure each CPU gets its state set up for gdb, not just the ones > before PowerPCCPUClass has had its gdb state set up. > Cc: qemu-stable@nongnu.org Fixes: 707c7c2ee1 ("target/ppc: Enable reporting of SPRs to GDB") > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > target/ppc/gdbstub.c | 30 +++++++++++++++++++----------- > 1 file changed, 19 insertions(+), 11 deletions(-) > > diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c > index 63c9abe4f1..ca39efdc35 100644 > --- a/target/ppc/gdbstub.c > +++ b/target/ppc/gdbstub.c > @@ -327,6 +327,25 @@ void ppc_gdb_gen_spr_xml(PowerPCCPU *cpu) > unsigned int num_regs = 0; > int i; > > + for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) { > + ppc_spr_t *spr = &env->spr_cb[i]; > + > + if (!spr->name) { > + continue; > + } > + > + /* > + * GDB identifies registers based on the order they are > + * presented in the XML. These ids will not match QEMU's > + * representation (which follows the PowerISA). > + * > + * Store the position of the current register description so > + * we can make the correspondence later. > + */ > + spr->gdb_id = num_regs; > + num_regs++; > + } > + > if (pcc->gdb_spr_xml) { > return; > } > @@ -348,17 +367,6 @@ void ppc_gdb_gen_spr_xml(PowerPCCPU *cpu) > > g_string_append_printf(xml, " bitsize=\"%d\"", TARGET_LONG_BITS); > g_string_append(xml, " group=\"spr\"/>"); > - > - /* > - * GDB identifies registers based on the order they are > - * presented in the XML. These ids will not match QEMU's > - * representation (which follows the PowerISA). > - * > - * Store the position of the current register description so > - * we can make the correspondence later. > - */ > - spr->gdb_id = num_regs; > - num_regs++; > } > > g_string_append(xml, "</feature>"); Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 5/31/23 03:23, Nicholas Piggin wrote: > Make sure each CPU gets its state set up for gdb, not just the ones > before PowerPCCPUClass has had its gdb state set up. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Applied to ppc-next. Thanks, C. > --- > target/ppc/gdbstub.c | 30 +++++++++++++++++++----------- > 1 file changed, 19 insertions(+), 11 deletions(-) > > diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c > index 63c9abe4f1..ca39efdc35 100644 > --- a/target/ppc/gdbstub.c > +++ b/target/ppc/gdbstub.c > @@ -327,6 +327,25 @@ void ppc_gdb_gen_spr_xml(PowerPCCPU *cpu) > unsigned int num_regs = 0; > int i; > > + for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) { > + ppc_spr_t *spr = &env->spr_cb[i]; > + > + if (!spr->name) { > + continue; > + } > + > + /* > + * GDB identifies registers based on the order they are > + * presented in the XML. These ids will not match QEMU's > + * representation (which follows the PowerISA). > + * > + * Store the position of the current register description so > + * we can make the correspondence later. > + */ > + spr->gdb_id = num_regs; > + num_regs++; > + } > + > if (pcc->gdb_spr_xml) { > return; > } > @@ -348,17 +367,6 @@ void ppc_gdb_gen_spr_xml(PowerPCCPU *cpu) > > g_string_append_printf(xml, " bitsize=\"%d\"", TARGET_LONG_BITS); > g_string_append(xml, " group=\"spr\"/>"); > - > - /* > - * GDB identifies registers based on the order they are > - * presented in the XML. These ids will not match QEMU's > - * representation (which follows the PowerISA). > - * > - * Store the position of the current register description so > - * we can make the correspondence later. > - */ > - spr->gdb_id = num_regs; > - num_regs++; > } > > g_string_append(xml, "</feature>");
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c index 63c9abe4f1..ca39efdc35 100644 --- a/target/ppc/gdbstub.c +++ b/target/ppc/gdbstub.c @@ -327,6 +327,25 @@ void ppc_gdb_gen_spr_xml(PowerPCCPU *cpu) unsigned int num_regs = 0; int i; + for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) { + ppc_spr_t *spr = &env->spr_cb[i]; + + if (!spr->name) { + continue; + } + + /* + * GDB identifies registers based on the order they are + * presented in the XML. These ids will not match QEMU's + * representation (which follows the PowerISA). + * + * Store the position of the current register description so + * we can make the correspondence later. + */ + spr->gdb_id = num_regs; + num_regs++; + } + if (pcc->gdb_spr_xml) { return; } @@ -348,17 +367,6 @@ void ppc_gdb_gen_spr_xml(PowerPCCPU *cpu) g_string_append_printf(xml, " bitsize=\"%d\"", TARGET_LONG_BITS); g_string_append(xml, " group=\"spr\"/>"); - - /* - * GDB identifies registers based on the order they are - * presented in the XML. These ids will not match QEMU's - * representation (which follows the PowerISA). - * - * Store the position of the current register description so - * we can make the correspondence later. - */ - spr->gdb_id = num_regs; - num_regs++; } g_string_append(xml, "</feature>");
Make sure each CPU gets its state set up for gdb, not just the ones before PowerPCCPUClass has had its gdb state set up. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- target/ppc/gdbstub.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-)