Akihiko Odaki <akihiko.od...@daynix.com> writes:
> Simplify GDBRegisterState by replacing num_regs and xml members with > one member that points to GDBFeature. > > Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com> > --- > gdbstub/gdbstub.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c > index b62002bc34..ee6b8b98c8 100644 > --- a/gdbstub/gdbstub.c > +++ b/gdbstub/gdbstub.c > @@ -47,10 +47,9 @@ > > typedef struct GDBRegisterState { > int base_reg; > - int num_regs; > gdb_get_reg_cb get_reg; > gdb_set_reg_cb set_reg; > - const char *xml; > + const GDBFeature *feature; > struct GDBRegisterState *next; > } GDBRegisterState; > > @@ -390,7 +389,7 @@ static const char *get_feature_xml(const char *p, const > char **newp, > pstrcat(buf, buf_sz, "\"/>"); > for (r = cpu->gdb_regs; r; r = r->next) { > pstrcat(buf, buf_sz, "<xi:include href=\""); > - pstrcat(buf, buf_sz, r->xml); > + pstrcat(buf, buf_sz, r->feature->xmlname); > pstrcat(buf, buf_sz, "\"/>"); > } I should note I've done some cleaning up of the XML code in the gdbstub so you'll probably want to re-base once the PR has gone in. > pstrcat(buf, buf_sz, "</target>"); > @@ -497,7 +496,7 @@ static int gdb_read_register(CPUState *cpu, GByteArray > *buf, int reg) > } > > for (r = cpu->gdb_regs; r; r = r->next) { > - if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) { > + if (r->base_reg <= reg && reg < r->base_reg + r->feature->num_regs) { > return r->get_reg(env, buf, reg - r->base_reg); > } > } > @@ -515,7 +514,7 @@ static int gdb_write_register(CPUState *cpu, uint8_t > *mem_buf, int reg) > } > > for (r = cpu->gdb_regs; r; r = r->next) { > - if (r->base_reg <= reg && reg < r->base_reg + r->num_regs) { > + if (r->base_reg <= reg && reg < r->base_reg + r->feature->num_regs) { > return r->set_reg(env, mem_buf, reg - r->base_reg); > } > } > @@ -538,17 +537,16 @@ void gdb_register_coprocessor(CPUState *cpu, > p = &cpu->gdb_regs; > while (*p) { > /* Check for duplicates. */ > - if (strcmp((*p)->xml, feature->xmlname) == 0) > + if ((*p)->feature == feature) > return; > p = &(*p)->next; > } > > s = g_new0(GDBRegisterState, 1); > s->base_reg = cpu->gdb_num_regs; > - s->num_regs = feature->num_regs; > s->get_reg = get_reg; > s->set_reg = set_reg; > - s->xml = feature->xml; > + s->feature = feature; > > /* Add to end of list. */ > cpu->gdb_num_regs += feature->num_regs; Otherwise: Reviewed-by: Alex Bennée <alex.ben...@linaro.org> -- Alex Bennée Virtualisation Tech Lead @ Linaro