Allow targets to register their legacy target_get_monitor_def() in SysemuCPUOps; check it first in get_monitor_def() otherwise fall back to previous per-target helper.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Message-Id: <[email protected]> --- include/hw/core/sysemu-cpu-ops.h | 8 ++++++++ monitor/hmp-target.c | 11 ++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/include/hw/core/sysemu-cpu-ops.h b/include/hw/core/sysemu-cpu-ops.h index 7b2d2d2610f..5b831393cf4 100644 --- a/include/hw/core/sysemu-cpu-ops.h +++ b/include/hw/core/sysemu-cpu-ops.h @@ -85,6 +85,14 @@ typedef struct SysemuCPUOps { */ bool (*internal_is_big_endian)(CPUState *cpu); + /** + * @monitor_get_register: Callback to fill @pval with register @name value. + * This field is legacy, use @gdb_core_xml_file + * to dump registers instead. + * Returns: 0 on success or negative errno on failure. + */ + int (*monitor_get_register)(CPUState *cs, const char *name, int64_t *pval); + /** * @legacy_vmsd: Legacy state for migration. * Do not use in new targets, use #DeviceClass::vmsd instead. diff --git a/monitor/hmp-target.c b/monitor/hmp-target.c index a222fd4c96a..46ccbd14aec 100644 --- a/monitor/hmp-target.c +++ b/monitor/hmp-target.c @@ -35,6 +35,7 @@ #include "qapi/qapi-commands-control.h" #include "qapi/qapi-commands-misc.h" #include "qapi/qapi-commands-machine.h" +#include "hw/core/sysemu-cpu-ops.h" /* Make devices configuration available for use in hmp-commands*.hx templates */ #include CONFIG_DEVICES @@ -85,9 +86,13 @@ int get_monitor_def(Monitor *mon, int64_t *pval, const char *name) } } - ret = target_get_monitor_def(cs, name, &tmp); - if (!ret) { - *pval = (target_long) tmp; + if (cs->cc->sysemu_ops->monitor_get_register) { + ret = cs->cc->sysemu_ops->monitor_get_register(cs, name, pval); + } else { + ret = target_get_monitor_def(cs, name, &tmp); + if (!ret) { + *pval = (target_long) tmp; + } } return ret; -- 2.53.0
