Message ID | 5acb4fd7a4bc6a2d3f1abe4eb456403af1704765.1436665556.git.crosthwaite.peter@gmail.com |
---|---|
State | New |
Headers | show |
Le 12/07/2015 04:00, Peter Crosthwaite a écrit : > From: Peter Crosthwaite <crosthwaitepeter@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 <gerg@uclinux.org> > Cc: Laurent Vivier <laurent@vivier.eu> > Signed-off-by: Peter Crosthwaite <crosthwaite.peter@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(-) Reviewed-by: Laurent Vivier <laurent@vivier.eu>
On 12/07/15 12:00, Peter Crosthwaite wrote: > From: Peter Crosthwaite <crosthwaitepeter@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 <gerg@uclinux.org> I see no problems. Reviewed-by: Greg Ungerer <gerg@uclinux.org> > Cc: Laurent Vivier <laurent@vivier.eu> > Signed-off-by: Peter Crosthwaite <crosthwaite.peter@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) >
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)