From: Peter Crosthwaite <crosthwaitepe...@gmail.com> Move the target_disas() mips specifics to the QOM disas_set_info hook and delete the #ifdef specific code in disas.c.
Cc: Aurelien Jarno <aurel...@aurel32.net> Cc: Leon Alrae <leon.al...@imgtec.com> Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> --- Testing: mips-test$ ./run-qemu -d in_asm -S 2> err QEMU 2.3.90 monitor - type 'help' for more information (qemu) x/i 0xbfc00000 0xbfc00000: j 0xbfc00580 (qemu) c (qemu) q mips-test$ more err IN: 0xbfc00000: j 0xbfc00580 0xbfc00004: nop IN: 0xbfc00580: li a0,2 0xbfc00584: lui sp,0x8000 ... --- disas.c | 12 ------------ target-mips/cpu.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/disas.c b/disas.c index eee369e..28decc9 100644 --- a/disas.c +++ b/disas.c @@ -238,12 +238,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_MIPS) -#ifdef TARGET_WORDS_BIGENDIAN - s.info.print_insn = print_insn_big_mips; -#else - s.info.print_insn = print_insn_little_mips; -#endif #elif defined(TARGET_ALPHA) s.info.mach = bfd_mach_alpha_ev6; s.info.print_insn = print_insn_alpha; @@ -445,12 +439,6 @@ void monitor_disas(Monitor *mon, CPUState *cpu, s.info.endian = BFD_ENDIAN_LITTLE; } s.info.print_insn = print_insn_ppc; -#elif defined(TARGET_MIPS) -#ifdef TARGET_WORDS_BIGENDIAN - s.info.print_insn = print_insn_big_mips; -#else - s.info.print_insn = print_insn_little_mips; -#endif #endif if (!s.info.print_insn) { monitor_printf(mon, "0x" TARGET_FMT_lx diff --git a/target-mips/cpu.c b/target-mips/cpu.c index 4027d0f..83ab2b0 100644 --- a/target-mips/cpu.c +++ b/target-mips/cpu.c @@ -97,6 +97,14 @@ static void mips_cpu_reset(CPUState *s) #endif } +static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info) { +#ifdef TARGET_WORDS_BIGENDIAN + info->print_insn = print_insn_big_mips; +#else + info->print_insn = print_insn_little_mips; +#endif +} + static void mips_cpu_realizefn(DeviceState *dev, Error **errp) { CPUState *cs = CPU(dev); @@ -153,6 +161,8 @@ static void mips_cpu_class_init(ObjectClass *c, void *data) cc->gdb_num_core_regs = 73; cc->gdb_stop_before_watchpoint = true; + + cc->disas_set_info = mips_cpu_disas_set_info; } static const TypeInfo mips_cpu_type_info = { -- 1.9.1