From: Peter Crosthwaite <crosthwaitepe...@gmail.com> Move the target_disas() m68k specifics to the QOM disas_set_info hook and delete the #ifdef specific code in disas.c.
Cc: Greg Ungerer <g...@uclinux.org> Cc: Laurent Vivier <laur...@vivier.eu> Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> --- Testing: I cant find binaries for this arch easily, but I got this from executing random code: $ ./m68k-softmmu/qemu-system-m68k -kernel ./random_code -S -nographic -d in_asm 2> err QEMU 2.3.90 monitor - type 'help' for more information (qemu) xp 0x40000000 0000000040000000: 0x7d413a22 (qemu) xp/i 0x40000000 0x40000000: mvsw %d1,%d6 (qemu) xp/i 0x40000004 0x40000004: addqb #2,%a0@(27614) (qemu) c (qemu) Aborted (core dumped) $ more err qemu: fatal: Illegal instruction: 7d41 @ 40000000 --- disas.c | 4 ---- target-m68k/cpu.c | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/disas.c b/disas.c index 6c86129..91cbb1a 100644 --- a/disas.c +++ b/disas.c @@ -243,8 +243,6 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, } s.info.disassembler_options = (char *)"any"; s.info.print_insn = print_insn_ppc; -#elif defined(TARGET_M68K) - s.info.print_insn = print_insn_m68k; #elif defined(TARGET_MIPS) #ifdef TARGET_WORDS_BIGENDIAN s.info.print_insn = print_insn_big_mips; @@ -463,8 +461,6 @@ void monitor_disas(Monitor *mon, CPUState *cpu, s.info.endian = BFD_ENDIAN_LITTLE; } s.info.print_insn = print_insn_ppc; -#elif defined(TARGET_M68K) - s.info.print_insn = print_insn_m68k; #elif defined(TARGET_MIPS) #ifdef TARGET_WORDS_BIGENDIAN s.info.print_insn = print_insn_big_mips; diff --git a/target-m68k/cpu.c b/target-m68k/cpu.c index 4f246da..2555755 100644 --- a/target-m68k/cpu.c +++ b/target-m68k/cpu.c @@ -61,6 +61,11 @@ static void m68k_cpu_reset(CPUState *s) tlb_flush(s, 1); } +static void m68k_cpu_disas_set_info(CPUState *cpu, disassemble_info *info) +{ + info->print_insn = print_insn_m68k; +} + /* CPU models */ static ObjectClass *m68k_cpu_class_by_name(const char *cpu_model) @@ -212,6 +217,8 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data) dc->vmsd = &vmstate_m68k_cpu; cc->gdb_num_core_regs = 18; cc->gdb_core_xml_file = "cf-core.xml"; + + cc->disas_set_info = m68k_cpu_disas_set_info; } static void register_cpu_type(const M68kCPUInfo *info) -- 1.9.1