diff options
author | Laurent Vivier <laurent@vivier.eu> | 2017-12-21 09:30:57 +0100 |
---|---|---|
committer | Laurent Vivier <laurent@vivier.eu> | 2017-12-21 20:11:28 +0100 |
commit | cea066821c75a533536bcbc6d79db07f2e0432f4 (patch) | |
tree | 5958b48c27e39cb92216d6a0a497881acf28c31c | |
parent | 5f63f6ab50b7c70bb8af8e0bd515ea14129c7aaa (diff) |
target/m68k: add monitor.c
This allows to use registers content in the monitor.
Example:
BEFORE:
(qemu) print $d0
unknown register
AFTER:
(qemu) print $d0
0
(qemu) print $sr
0x2000
(qemu) x/10i $pc
0x40010a2a: movew %sr,%d0
0x40010a2c: oril #1792,%d0
0x40010a32: movew %d0,%sr
0x40010a34: movel %a0@,%d0
0x40010a36: btst #3,%d0
0x40010a3a: beqs 0x40010a26
0x40010a3c: movew %sr,%d0
0x40010a3e: andil #63743,%d0
0x40010a44: movew %d0,%sr
0x40010a46: rts
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Thomas Huth <huth@tuxfamily.org>
Message-Id: <20171221083057.17942-1-laurent@vivier.eu>
-rw-r--r-- | target/m68k/Makefile.objs | 1 | ||||
-rw-r--r-- | target/m68k/monitor.c | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/target/m68k/Makefile.objs b/target/m68k/Makefile.objs index 39141ab93d..d143f20270 100644 --- a/target/m68k/Makefile.objs +++ b/target/m68k/Makefile.objs @@ -1,3 +1,4 @@ obj-y += m68k-semi.o obj-y += translate.o op_helper.o helper.o cpu.o fpu_helper.o obj-y += gdbstub.o +obj-$(CONFIG_SOFTMMU) += monitor.o diff --git a/target/m68k/monitor.c b/target/m68k/monitor.c new file mode 100644 index 0000000000..5605323a81 --- /dev/null +++ b/target/m68k/monitor.c @@ -0,0 +1,39 @@ +/* + * QEMU monitor for m68k + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * later. See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "monitor/hmp-target.h" + +static const MonitorDef monitor_defs[] = { + { "d0", offsetof(CPUM68KState, dregs[0]) }, + { "d1", offsetof(CPUM68KState, dregs[1]) }, + { "d2", offsetof(CPUM68KState, dregs[2]) }, + { "d3", offsetof(CPUM68KState, dregs[3]) }, + { "d4", offsetof(CPUM68KState, dregs[4]) }, + { "d5", offsetof(CPUM68KState, dregs[5]) }, + { "d6", offsetof(CPUM68KState, dregs[6]) }, + { "d7", offsetof(CPUM68KState, dregs[7]) }, + { "a0", offsetof(CPUM68KState, aregs[0]) }, + { "a1", offsetof(CPUM68KState, aregs[1]) }, + { "a2", offsetof(CPUM68KState, aregs[2]) }, + { "a3", offsetof(CPUM68KState, aregs[3]) }, + { "a4", offsetof(CPUM68KState, aregs[4]) }, + { "a5", offsetof(CPUM68KState, aregs[5]) }, + { "a6", offsetof(CPUM68KState, aregs[6]) }, + { "a7", offsetof(CPUM68KState, aregs[7]) }, + { "pc", offsetof(CPUM68KState, pc) }, + { "sr", offsetof(CPUM68KState, sr) }, + { "ssp", offsetof(CPUM68KState, sp[0]) }, + { "usp", offsetof(CPUM68KState, sp[1]) }, + { NULL }, +}; + +const MonitorDef *target_monitor_defs(void) +{ + return monitor_defs; +} |