mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-31 14:02:05 -06:00

Currently the number of registers exposed to GDB is written as magic numbers in code. Derive the number of registers GDB actually see from XML files to replace the magic numbers in code later. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20231025093128.33116-2-akihiko.odaki@daynix.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20231106185112.2755262-9-alex.bennee@linaro.org>
52 lines
1.6 KiB
C
52 lines
1.6 KiB
C
#ifndef GDBSTUB_H
|
|
#define GDBSTUB_H
|
|
|
|
#define DEFAULT_GDBSTUB_PORT "1234"
|
|
|
|
/* GDB breakpoint/watchpoint types */
|
|
#define GDB_BREAKPOINT_SW 0
|
|
#define GDB_BREAKPOINT_HW 1
|
|
#define GDB_WATCHPOINT_WRITE 2
|
|
#define GDB_WATCHPOINT_READ 3
|
|
#define GDB_WATCHPOINT_ACCESS 4
|
|
|
|
typedef struct GDBFeature {
|
|
const char *xmlname;
|
|
const char *xml;
|
|
int num_regs;
|
|
} GDBFeature;
|
|
|
|
|
|
/* Get or set a register. Returns the size of the register. */
|
|
typedef int (*gdb_get_reg_cb)(CPUArchState *env, GByteArray *buf, int reg);
|
|
typedef int (*gdb_set_reg_cb)(CPUArchState *env, uint8_t *buf, int reg);
|
|
|
|
/**
|
|
* gdb_register_coprocessor() - register a supplemental set of registers
|
|
* @cpu - the CPU associated with registers
|
|
* @get_reg - get function (gdb reading)
|
|
* @set_reg - set function (gdb modifying)
|
|
* @num_regs - number of registers in set
|
|
* @xml - xml name of set
|
|
* @gpos - non-zero to append to "general" register set at @gpos
|
|
*/
|
|
void gdb_register_coprocessor(CPUState *cpu,
|
|
gdb_get_reg_cb get_reg, gdb_set_reg_cb set_reg,
|
|
int num_regs, const char *xml, int g_pos);
|
|
|
|
/**
|
|
* gdbserver_start: start the gdb server
|
|
* @port_or_device: connection spec for gdb
|
|
*
|
|
* For CONFIG_USER this is either a tcp port or a path to a fifo. For
|
|
* system emulation you can use a full chardev spec for your gdbserver
|
|
* port.
|
|
*/
|
|
int gdbserver_start(const char *port_or_device);
|
|
|
|
void gdb_set_stop_cpu(CPUState *cpu);
|
|
|
|
/* in gdbstub-xml.c, generated by scripts/feature_to_c.py */
|
|
extern const GDBFeature gdb_static_features[];
|
|
|
|
#endif
|