From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
"John Snow" <jsnow@redhat.com>,
"Aurelien Jarno" <aurelien@aurel32.net>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Brian Cain" <bcain@quicinc.com>,
"Laurent Vivier" <laurent@vivier.eu>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Cleber Rosa" <crosa@redhat.com>,
"David Hildenbrand" <david@redhat.com>,
"Beraldo Leal" <bleal@redhat.com>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
"Weiwei Li" <liwei1518@gmail.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Paul Durrant" <paul@xen.org>,
qemu-s390x@nongnu.org, "David Woodhouse" <dwmw2@infradead.org>,
"Liu Zhiwei" <zhiwei_liu@linux.alibaba.com>,
"Ilya Leoshkevich" <iii@linux.ibm.com>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Michael Rolnik" <mrolnik@gmail.com>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
"Laurent Vivier" <lvivier@redhat.com>,
kvm@vger.kernel.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Alexandre Iooss" <erdnaxe@crans.org>,
"Thomas Huth" <thuth@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
qemu-ppc@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Nicholas Piggin" <npiggin@gmail.com>,
qemu-riscv@nongnu.org, qemu-arm@nongnu.org,
"Song Gao" <gaosong@loongson.cn>,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Daniel Henrique Barboza" <dbarboza@ventanamicro.com>,
"Cédric Le Goater" <clg@kaod.org>,
"Mahmoud Mandour" <ma.mandourr@gmail.com>,
"Bin Meng" <bin.meng@windriver.com>,
"Akihiko Odaki" <akihiko.odaki@daynix.com>
Subject: [PATCH 32/40] gdbstub: Infer number of core registers from XML
Date: Thu, 21 Dec 2023 10:38:10 +0000 [thread overview]
Message-ID: <20231221103818.1633766-33-alex.bennee@linaro.org> (raw)
In-Reply-To: <20231221103818.1633766-1-alex.bennee@linaro.org>
From: Akihiko Odaki <akihiko.odaki@daynix.com>
GDBFeature has the num_regs member so use it where applicable to
remove magic numbers.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-Id: <20231213-gdb-v17-8-777047380591@daynix.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
include/hw/core/cpu.h | 3 ++-
target/s390x/cpu.h | 2 --
gdbstub/gdbstub.c | 5 ++++-
target/arm/cpu.c | 1 -
target/arm/cpu64.c | 1 -
target/avr/cpu.c | 1 -
target/hexagon/cpu.c | 1 -
target/i386/cpu.c | 2 --
target/loongarch/cpu.c | 2 --
target/m68k/cpu.c | 1 -
target/microblaze/cpu.c | 1 -
target/riscv/cpu.c | 1 -
target/rx/cpu.c | 1 -
target/s390x/cpu.c | 1 -
14 files changed, 6 insertions(+), 17 deletions(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index c0c8320413e..a6214610603 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -127,7 +127,8 @@ struct SysemuCPUOps;
* @gdb_adjust_breakpoint: Callback for adjusting the address of a
* breakpoint. Used by AVR to handle a gdb mis-feature with
* its Harvard architecture split code and data.
- * @gdb_num_core_regs: Number of core registers accessible to GDB.
+ * @gdb_num_core_regs: Number of core registers accessible to GDB or 0 to infer
+ * from @gdb_core_xml_file.
* @gdb_core_xml_file: File name for core registers GDB XML description.
* @gdb_stop_before_watchpoint: Indicates whether GDB expects the CPU to stop
* before the insn which triggers a watchpoint rather than after it.
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index fa3aac4f973..2d81fbfea5c 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -491,8 +491,6 @@ static inline void cpu_get_tb_cpu_state(CPUS390XState *env, vaddr *pc,
#define S390_R13_REGNUM 15
#define S390_R14_REGNUM 16
#define S390_R15_REGNUM 17
-/* Total Core Registers. */
-#define S390_NUM_CORE_REGS 18
static inline void setcc(S390CPU *cpu, uint64_t cc)
{
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 1d5c1da1b24..801eba9a0b0 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -546,9 +546,12 @@ void gdb_init_cpu(CPUState *cpu)
gdb_register_feature(cpu, 0,
cc->gdb_read_register, cc->gdb_write_register,
feature);
+ cpu->gdb_num_regs = cpu->gdb_num_g_regs = feature->num_regs;
}
- cpu->gdb_num_regs = cpu->gdb_num_g_regs = cc->gdb_num_core_regs;
+ if (cc->gdb_num_core_regs) {
+ cpu->gdb_num_regs = cpu->gdb_num_g_regs = cc->gdb_num_core_regs;
+ }
}
void gdb_register_coprocessor(CPUState *cpu,
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 650e09b29c5..0a02d16220b 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2498,7 +2498,6 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
#ifndef CONFIG_USER_ONLY
cc->sysemu_ops = &arm_sysemu_ops;
#endif
- cc->gdb_num_core_regs = 26;
cc->gdb_arch_name = arm_gdb_arch_name;
cc->gdb_get_dynamic_xml = arm_gdb_get_dynamic_xml;
cc->gdb_stop_before_watchpoint = true;
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 8e30a7993ea..869d8dd24ee 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -793,7 +793,6 @@ static void aarch64_cpu_class_init(ObjectClass *oc, void *data)
cc->gdb_read_register = aarch64_cpu_gdb_read_register;
cc->gdb_write_register = aarch64_cpu_gdb_write_register;
- cc->gdb_num_core_regs = 34;
cc->gdb_core_xml_file = "aarch64-core.xml";
cc->gdb_arch_name = aarch64_gdb_arch_name;
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
index 999c010dedb..4bab9e22728 100644
--- a/target/avr/cpu.c
+++ b/target/avr/cpu.c
@@ -251,7 +251,6 @@ static void avr_cpu_class_init(ObjectClass *oc, void *data)
cc->gdb_read_register = avr_cpu_gdb_read_register;
cc->gdb_write_register = avr_cpu_gdb_write_register;
cc->gdb_adjust_breakpoint = avr_cpu_gdb_adjust_breakpoint;
- cc->gdb_num_core_regs = 35;
cc->gdb_core_xml_file = "avr-cpu.xml";
cc->tcg_ops = &avr_tcg_ops;
}
diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c
index 65ac9c75ad0..71678ef9c67 100644
--- a/target/hexagon/cpu.c
+++ b/target/hexagon/cpu.c
@@ -384,7 +384,6 @@ static void hexagon_cpu_class_init(ObjectClass *c, void *data)
cc->get_pc = hexagon_cpu_get_pc;
cc->gdb_read_register = hexagon_gdb_read_register;
cc->gdb_write_register = hexagon_gdb_write_register;
- cc->gdb_num_core_regs = TOTAL_PER_THREAD_REGS;
cc->gdb_stop_before_watchpoint = true;
cc->gdb_core_xml_file = "hexagon-core.xml";
cc->disas_set_info = hexagon_cpu_disas_set_info;
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 95d5f16cd5e..b14c97169cd 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -7969,10 +7969,8 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
cc->gdb_arch_name = x86_gdb_arch_name;
#ifdef TARGET_X86_64
cc->gdb_core_xml_file = "i386-64bit.xml";
- cc->gdb_num_core_regs = 66;
#else
cc->gdb_core_xml_file = "i386-32bit.xml";
- cc->gdb_num_core_regs = 50;
#endif
cc->disas_set_info = x86_disas_set_info;
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index b26187dfdeb..6f05bf5aed7 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -849,7 +849,6 @@ static void loongarch32_cpu_class_init(ObjectClass *c, void *data)
{
CPUClass *cc = CPU_CLASS(c);
- cc->gdb_num_core_regs = 35;
cc->gdb_core_xml_file = "loongarch-base32.xml";
cc->gdb_arch_name = loongarch32_gdb_arch_name;
}
@@ -863,7 +862,6 @@ static void loongarch64_cpu_class_init(ObjectClass *c, void *data)
{
CPUClass *cc = CPU_CLASS(c);
- cc->gdb_num_core_regs = 35;
cc->gdb_core_xml_file = "loongarch-base64.xml";
cc->gdb_arch_name = loongarch64_gdb_arch_name;
}
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index 11c7e0a7902..a27194b2a59 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -564,7 +564,6 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data)
#endif
cc->disas_set_info = m68k_cpu_disas_set_info;
- cc->gdb_num_core_regs = 18;
cc->tcg_ops = &m68k_tcg_ops;
}
diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c
index 1998f69828f..9d3fbfe1592 100644
--- a/target/microblaze/cpu.c
+++ b/target/microblaze/cpu.c
@@ -428,7 +428,6 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data)
cc->sysemu_ops = &mb_sysemu_ops;
#endif
device_class_set_props(dc, mb_properties);
- cc->gdb_num_core_regs = 32 + 25;
cc->gdb_core_xml_file = "microblaze-core.xml";
cc->disas_set_info = mb_disas_set_info;
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 673e937a5d8..a3a98230ca8 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -1688,7 +1688,6 @@ static void riscv_cpu_common_class_init(ObjectClass *c, void *data)
cc->get_pc = riscv_cpu_get_pc;
cc->gdb_read_register = riscv_cpu_gdb_read_register;
cc->gdb_write_register = riscv_cpu_gdb_write_register;
- cc->gdb_num_core_regs = 33;
cc->gdb_stop_before_watchpoint = true;
cc->disas_set_info = riscv_cpu_disas_set_info;
#ifndef CONFIG_USER_ONLY
diff --git a/target/rx/cpu.c b/target/rx/cpu.c
index 9cc9d9d15ec..cf11b189116 100644
--- a/target/rx/cpu.c
+++ b/target/rx/cpu.c
@@ -231,7 +231,6 @@ static void rx_cpu_class_init(ObjectClass *klass, void *data)
cc->gdb_write_register = rx_cpu_gdb_write_register;
cc->disas_set_info = rx_cpu_disas_set_info;
- cc->gdb_num_core_regs = 26;
cc->gdb_core_xml_file = "rx-core.xml";
cc->tcg_ops = &rx_tcg_ops;
}
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 6acfa1c91b2..6fba9497295 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -362,7 +362,6 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data)
s390_cpu_class_init_sysemu(cc);
#endif
cc->disas_set_info = s390_cpu_disas_set_info;
- cc->gdb_num_core_regs = S390_NUM_CORE_REGS;
cc->gdb_core_xml_file = "s390x-core64.xml";
cc->gdb_arch_name = s390_gdb_arch_name;
--
2.39.2
next prev parent reply other threads:[~2023-12-21 10:56 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-21 10:37 [PATCH 00/40] testing and plugin updates for 9.0 Alex Bennée
2023-12-21 10:37 ` [PATCH 01/40] tests/avocado: Add a test for a little-endian microblaze machine Alex Bennée
2023-12-21 10:37 ` [PATCH 02/40] tests/avocado: use snapshot=on in kvm_xen_guest Alex Bennée
2023-12-21 10:37 ` [PATCH 03/40] gitlab: include microblazeel in testing Alex Bennée
2023-12-21 10:37 ` [PATCH 04/40] chardev: use bool for fe_is_open Alex Bennée
2023-12-21 10:37 ` [PATCH 05/40] qtest: bump min meson timeout to 60 seconds Alex Bennée
2023-12-21 10:37 ` [PATCH 06/40] qtest: bump migration-test timeout to 8 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 07/40] qtest: bump qom-test timeout to 15 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 08/40] qtest: bump npcm7xx_pwn-test timeout to 5 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 09/40] qtest: bump test-hmp timeout to 4 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 10/40] qtest: bump pxe-test timeout to 10 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 11/40] qtest: bump prom-env-test timeout to 6 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 12/40] qtest: bump boot-serial-test timeout to 3 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 13/40] qtest: bump qos-test timeout to 2 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 14/40] qtest: bump aspeed_smc-test timeout to 6 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 15/40] qtest: bump bios-table-test timeout to 9 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 16/40] tests/qtest: Bump the device-introspect-test timeout to 12 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 17/40] tests/unit: Bump test-aio-multithread test timeout to 2 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 18/40] tests/unit: Bump test-crypto-block test timeout to 5 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 19/40] tests/fp: Bump fp-test-mulAdd test timeout to 3 minutes Alex Bennée
2023-12-21 10:37 ` [PATCH 20/40] mtest2make: stop disabling meson test timeouts Alex Bennée
2023-12-21 10:37 ` [PATCH 21/40] hw/riscv: Use misa_mxl instead of misa_mxl_max Alex Bennée
2023-12-21 10:38 ` [PATCH 22/40] target/riscv: Remove misa_mxl validation Alex Bennée
2023-12-21 10:38 ` [PATCH 23/40] target/riscv: Move misa_mxl_max to class Alex Bennée
2023-12-21 10:38 ` [PATCH 24/40] target/riscv: Validate misa_mxl_max only once Alex Bennée
2023-12-21 10:38 ` [PATCH 25/40] target/arm: Use GDBFeature for dynamic XML Alex Bennée
2023-12-21 10:38 ` [PATCH 26/40] target/ppc: " Alex Bennée
2023-12-21 10:38 ` [PATCH 27/40] target/riscv: " Alex Bennée
2023-12-21 10:38 ` [PATCH 28/40] gdbstub: Use GDBFeature for gdb_register_coprocessor Alex Bennée
2023-12-21 10:38 ` [PATCH 29/40] gdbstub: Use GDBFeature for GDBRegisterState Alex Bennée
2023-12-21 10:38 ` [PATCH 30/40] gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb Alex Bennée
2023-12-21 10:38 ` [PATCH 31/40] gdbstub: Simplify XML lookup Alex Bennée
2023-12-21 10:38 ` Alex Bennée [this message]
2023-12-21 10:38 ` [PATCH 33/40] hw/core/cpu: Remove gdb_get_dynamic_xml member Alex Bennée
2023-12-21 10:38 ` [PATCH 34/40] gdbstub: Add members to identify registers to GDBFeature Alex Bennée
2023-12-21 10:38 ` [PATCH 35/40] plugins: Use different helpers when reading registers Alex Bennée
2023-12-21 10:38 ` [PATCH 36/40] gdbstub: expose api to find registers Alex Bennée
2023-12-21 10:38 ` [PATCH 37/40] plugins: add an API to read registers Alex Bennée
2023-12-21 13:19 ` Akihiko Odaki
2023-12-22 13:45 ` Alex Bennée
2023-12-23 7:17 ` Akihiko Odaki
2023-12-21 10:38 ` [PATCH 38/40] contrib/plugins: fix imatch Alex Bennée
2023-12-21 10:38 ` [PATCH 39/40] contrib/plugins: extend execlog to track register changes Alex Bennée
2023-12-21 10:38 ` [PATCH 40/40] contrib/plugins: optimise the register value tracking Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231221103818.1633766-33-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=akihiko.odaki@daynix.com \
--cc=alistair.francis@wdc.com \
--cc=aurelien@aurel32.net \
--cc=bcain@quicinc.com \
--cc=bin.meng@windriver.com \
--cc=bleal@redhat.com \
--cc=clg@kaod.org \
--cc=crosa@redhat.com \
--cc=danielhb413@gmail.com \
--cc=david@redhat.com \
--cc=dbarboza@ventanamicro.com \
--cc=dwmw2@infradead.org \
--cc=edgar.iglesias@gmail.com \
--cc=eduardo@habkost.net \
--cc=erdnaxe@crans.org \
--cc=gaosong@loongson.cn \
--cc=iii@linux.ibm.com \
--cc=jsnow@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=laurent@vivier.eu \
--cc=liwei1518@gmail.com \
--cc=lvivier@redhat.com \
--cc=ma.mandourr@gmail.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mrolnik@gmail.com \
--cc=npiggin@gmail.com \
--cc=palmer@dabbelt.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
--cc=wangyanan55@huawei.com \
--cc=ysato@users.sourceforge.jp \
--cc=zhiwei_liu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).