From: Peter Crosthwaite <crosthwaitepe...@gmail.com> Move the target_disas() lm32 specifics to the QOM disas_set_info hook and delete the #ifdef specific code in disas.c.
Cc: Michael Walle <mich...@walle.cc> Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> --- Testing: $ ./lm32-softmmu/qemu-system-lm32 -kernel ./random_code -S -d in_asm -nographic QEMU 2.3.90 monitor - type 'help' for more information (qemu) info cpus * CPU #0: thread_id=1113 (qemu) info registers IN: PC=8000000 ... (qemu) x/i 0x8000000 0x08000000: 7d 41 3a 22 cmpnei r1, r10, 14882 (qemu) x/i 0x8000004 0x08000004: 54 28 6b de bgu r8, r1, 801af7c (qemu) c $ more err 08000000: 7d413a22 cmpnei r10, r1, 14882 08000004: 54286bde bgu r1, r8, 110456 0x08000000: 7d 41 3a 22 cmpnei r1, r10, 14882 0x08000004: 54 28 6b de bgu r8, r1, 801af7c --- disas.c | 6 ------ target-lm32/cpu.c | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/disas.c b/disas.c index 9459505..f269cc9 100644 --- a/disas.c +++ b/disas.c @@ -250,9 +250,6 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, #elif defined(TARGET_ALPHA) s.info.mach = bfd_mach_alpha_ev6; s.info.print_insn = print_insn_alpha; -#elif defined(TARGET_LM32) - s.info.mach = bfd_mach_lm32; - s.info.print_insn = print_insn_lm32; #endif if (s.info.print_insn == NULL) { s.info.print_insn = print_insn_od_target; @@ -460,9 +457,6 @@ void monitor_disas(Monitor *mon, CPUState *cpu, #elif defined(TARGET_SH4) s.info.mach = bfd_mach_sh4; s.info.print_insn = print_insn_sh; -#elif defined(TARGET_LM32) - s.info.mach = bfd_mach_lm32; - s.info.print_insn = print_insn_lm32; #endif if (!s.info.print_insn) { monitor_printf(mon, "0x" TARGET_FMT_lx diff --git a/target-lm32/cpu.c b/target-lm32/cpu.c index c2b77c6..f9080ef 100644 --- a/target-lm32/cpu.c +++ b/target-lm32/cpu.c @@ -131,6 +131,12 @@ static void lm32_cpu_reset(CPUState *s) tlb_flush(s, 1); } +static void lm32_cpu_disas_set_info(CPUState *cpu, disassemble_info *info) +{ + info->mach = bfd_mach_lm32; + info->print_insn = print_insn_lm32; +} + static void lm32_cpu_realizefn(DeviceState *dev, Error **errp) { CPUState *cs = CPU(dev); @@ -275,6 +281,8 @@ static void lm32_cpu_class_init(ObjectClass *oc, void *data) cc->gdb_num_core_regs = 32 + 7; cc->gdb_stop_before_watchpoint = true; cc->debug_excp_handler = lm32_debug_excp_handler; + + cc->disas_set_info = lm32_cpu_disas_set_info; } static void lm32_register_cpu_type(const LM32CPUInfo *info) -- 1.9.1