mirror of https://github.com/xemu-project/xemu.git
gdbstub: Use GDBFeature for GDBRegisterState
Simplify GDBRegisterState by replacing num_regs and xml members with one member that points to GDBFeature. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20231213-gdb-v17-5-777047380591@daynix.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240227144335.1196131-10-alex.bennee@linaro.org>
This commit is contained in:
parent
ac1e867100
commit
c494f8f529
|
@ -47,10 +47,9 @@
|
||||||
|
|
||||||
typedef struct GDBRegisterState {
|
typedef struct GDBRegisterState {
|
||||||
int base_reg;
|
int base_reg;
|
||||||
int num_regs;
|
|
||||||
gdb_get_reg_cb get_reg;
|
gdb_get_reg_cb get_reg;
|
||||||
gdb_set_reg_cb set_reg;
|
gdb_set_reg_cb set_reg;
|
||||||
const char *xml;
|
const GDBFeature *feature;
|
||||||
} GDBRegisterState;
|
} GDBRegisterState;
|
||||||
|
|
||||||
GDBState gdbserver_state;
|
GDBState gdbserver_state;
|
||||||
|
@ -391,7 +390,7 @@ static const char *get_feature_xml(const char *p, const char **newp,
|
||||||
g_ptr_array_add(
|
g_ptr_array_add(
|
||||||
xml,
|
xml,
|
||||||
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
|
g_markup_printf_escaped("<xi:include href=\"%s\"/>",
|
||||||
r->xml));
|
r->feature->xmlname));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_ptr_array_add(xml, g_strdup("</target>"));
|
g_ptr_array_add(xml, g_strdup("</target>"));
|
||||||
|
@ -513,7 +512,7 @@ static int gdb_read_register(CPUState *cpu, GByteArray *buf, int reg)
|
||||||
if (cpu->gdb_regs) {
|
if (cpu->gdb_regs) {
|
||||||
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
|
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
|
||||||
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
||||||
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);
|
return r->get_reg(env, buf, reg - r->base_reg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -534,7 +533,7 @@ static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg)
|
||||||
if (cpu->gdb_regs) {
|
if (cpu->gdb_regs) {
|
||||||
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
|
for (guint i = 0; i < cpu->gdb_regs->len; i++) {
|
||||||
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
r = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
||||||
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);
|
return r->set_reg(env, mem_buf, reg - r->base_reg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -553,7 +552,7 @@ void gdb_register_coprocessor(CPUState *cpu,
|
||||||
for (i = 0; i < cpu->gdb_regs->len; i++) {
|
for (i = 0; i < cpu->gdb_regs->len; i++) {
|
||||||
/* Check for duplicates. */
|
/* Check for duplicates. */
|
||||||
s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
||||||
if (strcmp(s->xml, feature->xmlname) == 0) {
|
if (s->feature == feature) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -565,10 +564,9 @@ void gdb_register_coprocessor(CPUState *cpu,
|
||||||
g_array_set_size(cpu->gdb_regs, i + 1);
|
g_array_set_size(cpu->gdb_regs, i + 1);
|
||||||
s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
|
||||||
s->base_reg = cpu->gdb_num_regs;
|
s->base_reg = cpu->gdb_num_regs;
|
||||||
s->num_regs = feature->num_regs;
|
|
||||||
s->get_reg = get_reg;
|
s->get_reg = get_reg;
|
||||||
s->set_reg = set_reg;
|
s->set_reg = set_reg;
|
||||||
s->xml = feature->xml;
|
s->feature = feature;
|
||||||
|
|
||||||
/* Add to end of list. */
|
/* Add to end of list. */
|
||||||
cpu->gdb_num_regs += feature->num_regs;
|
cpu->gdb_num_regs += feature->num_regs;
|
||||||
|
|
Loading…
Reference in New Issue