X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=disas.c;h=ce342bc8ee4dd9f1509473a5bb46e05a9e0b41a4;hb=f705db9df04c6491f242a5a4585dfe72b708f197;hp=6bf7592702a17de0a82d4d0cf179901c651ef8a6;hpb=376253ece484b7dc86f215641dca47c3c88f38d1;p=qemu.git diff --git a/disas.c b/disas.c index 6bf759270..ce342bc8e 100644 --- a/disas.c +++ b/disas.c @@ -33,10 +33,7 @@ target_read_memory (bfd_vma memaddr, int length, struct disassemble_info *info) { - int i; - for(i = 0; i < length; i++) { - myaddr[i] = ldub_code(memaddr + i); - } + cpu_memory_rw_debug(cpu_single_env, memaddr, myaddr, length, 0); return 0; } @@ -198,6 +195,9 @@ void target_disas(FILE *out, target_ulong code, target_ulong size, int flags) #elif defined(TARGET_CRIS) disasm_info.mach = bfd_mach_cris_v32; print_insn = print_insn_crisv32; +#elif defined(TARGET_MICROBLAZE) + disasm_info.mach = bfd_arch_microblaze; + print_insn = print_insn_microblaze; #else fprintf(out, "0x" TARGET_FMT_lx ": Asm output not supported on this arch\n", code); @@ -222,6 +222,13 @@ void target_disas(FILE *out, target_ulong code, target_ulong size, int flags) fprintf(out, "\n"); if (count < 0) break; + if (size < count) { + fprintf(out, + "Disassembler disagrees with translator over instruction " + "decoding\n" + "Please report this to qemu-devel@nongnu.org\n"); + break; + } } } @@ -239,7 +246,7 @@ void disas(FILE *out, void *code, unsigned long size) disasm_info.buffer_vma = (unsigned long)code; disasm_info.buffer_length = size; -#ifdef WORDS_BIGENDIAN +#ifdef HOST_WORDS_BIGENDIAN disasm_info.endian = BFD_ENDIAN_BIG; #else disasm_info.endian = BFD_ENDIAN_LITTLE;