[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 11/23] gdbstub: Use GDBFeature for GDBRegisterState
|
From: |
Akihiko Odaki |
|
Subject: |
[PATCH v9 11/23] gdbstub: Use GDBFeature for GDBRegisterState |
|
Date: |
Wed, 11 Oct 2023 16:02:57 +0900 |
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>
---
gdbstub/gdbstub.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 20586e0b6a..9a4124afc4 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;
} GDBRegisterState;
GDBState gdbserver_state;
@@ -390,7 +389,7 @@ static const char *get_feature_xml(const char *p, const
char **newp,
g_ptr_array_add(
xml,
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, NULL);
@@ -504,7 +503,7 @@ static int gdb_read_register(CPUState *cpu, GByteArray
*buf, int reg)
for (guint i = 0; i < cpu->gdb_regs->len; 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);
}
}
@@ -523,7 +522,7 @@ static int gdb_write_register(CPUState *cpu, uint8_t
*mem_buf, int reg)
for (guint i = 0; i < cpu->gdb_regs->len; 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);
}
}
@@ -541,7 +540,7 @@ void gdb_register_coprocessor(CPUState *cpu,
for (i = 0; i < cpu->gdb_regs->len; i++) {
/* Check for duplicates. */
s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
- if (strcmp(s->xml, feature->xmlname) == 0) {
+ if (s->feature == feature) {
return;
}
}
@@ -553,10 +552,9 @@ void gdb_register_coprocessor(CPUState *cpu,
g_array_set_size(cpu->gdb_regs, i + 1);
s = &g_array_index(cpu->gdb_regs, GDBRegisterState, i);
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;
--
2.42.0
- [PATCH v9 02/23] target/riscv: Remove misa_mxl validation, (continued)
- [PATCH v9 02/23] target/riscv: Remove misa_mxl validation, Akihiko Odaki, 2023/10/11
- [PATCH v9 03/23] target/riscv: Validate misa_mxl_max only once, Akihiko Odaki, 2023/10/11
- [PATCH v9 04/23] gdbstub: Add num_regs member to GDBFeature, Akihiko Odaki, 2023/10/11
- [PATCH v9 05/23] gdbstub: Introduce gdb_find_static_feature(), Akihiko Odaki, 2023/10/11
- [PATCH v9 06/23] gdbstub: Introduce GDBFeatureBuilder, Akihiko Odaki, 2023/10/11
- [PATCH v9 07/23] target/arm: Use GDBFeature for dynamic XML, Akihiko Odaki, 2023/10/11
- [PATCH v9 09/23] target/riscv: Use GDBFeature for dynamic XML, Akihiko Odaki, 2023/10/11
- [PATCH v9 08/23] target/ppc: Use GDBFeature for dynamic XML, Akihiko Odaki, 2023/10/11
- [PATCH v9 10/23] gdbstub: Use GDBFeature for gdb_register_coprocessor, Akihiko Odaki, 2023/10/11
- [PATCH v9 11/23] gdbstub: Use GDBFeature for GDBRegisterState,
Akihiko Odaki <=
- [PATCH v9 13/23] gdbstub: Simplify XML lookup, Akihiko Odaki, 2023/10/11
- [PATCH v9 12/23] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb, Akihiko Odaki, 2023/10/11
- [PATCH v9 14/23] gdbstub: Infer number of core registers from XML, Akihiko Odaki, 2023/10/11
- [PATCH v9 15/23] hw/core/cpu: Remove gdb_get_dynamic_xml member, Akihiko Odaki, 2023/10/11
- [PATCH v9 16/23] gdbstub: Add members to identify registers to GDBFeature, Akihiko Odaki, 2023/10/11
- [PATCH v9 18/23] cpu: Call plugin hooks only when ready, Akihiko Odaki, 2023/10/11
- [PATCH v9 19/23] plugins: Remove an extra parameter, Akihiko Odaki, 2023/10/11
- [PATCH v9 17/23] gdbstub: Expose functions to read registers, Akihiko Odaki, 2023/10/11
- [PATCH v9 20/23] plugins: Use different helpers when reading registers, Akihiko Odaki, 2023/10/11