aboutsummaryrefslogtreecommitdiffstats
path: root/disas.c
diff options
context:
space:
mode:
authorDavid Turner <digit@android.com>2010-09-09 22:56:10 +0200
committerDavid 'Digit' Turner <digit@android.com>2010-09-13 00:30:34 -0700
commit75fb4a08de4abce11ee7cf81bcddd5193eb0438d (patch)
tree47261e30e1472132e72f041d7dc1d6cae95d2a07 /disas.c
parent6a9ef1773bf874dea493ff3861782a1e577b67dd (diff)
downloadexternal_qemu-75fb4a08de4abce11ee7cf81bcddd5193eb0438d.zip
external_qemu-75fb4a08de4abce11ee7cf81bcddd5193eb0438d.tar.gz
external_qemu-75fb4a08de4abce11ee7cf81bcddd5193eb0438d.tar.bz2
upstream: disas update.
Diffstat (limited to 'disas.c')
-rw-r--r--disas.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/disas.c b/disas.c
index ce342bc..79a98de 100644
--- a/disas.c
+++ b/disas.c
@@ -73,6 +73,21 @@ generic_symbol_at_address (bfd_vma addr, struct disassemble_info *info)
return 1;
}
+bfd_vma bfd_getl64 (const bfd_byte *addr)
+{
+ unsigned long long v;
+
+ v = (unsigned long long) addr[0];
+ v |= (unsigned long long) addr[1] << 8;
+ v |= (unsigned long long) addr[2] << 16;
+ v |= (unsigned long long) addr[3] << 24;
+ v |= (unsigned long long) addr[4] << 32;
+ v |= (unsigned long long) addr[5] << 40;
+ v |= (unsigned long long) addr[6] << 48;
+ v |= (unsigned long long) addr[7] << 56;
+ return (bfd_vma) v;
+}
+
bfd_vma bfd_getl32 (const bfd_byte *addr)
{
unsigned long v;
@@ -278,6 +293,8 @@ void disas(FILE *out, void *code, unsigned long size)
print_insn = print_insn_s390;
#elif defined(__hppa__)
print_insn = print_insn_hppa;
+#elif defined(__ia64__)
+ print_insn = print_insn_ia64;
#else
fprintf(out, "0x%lx: Asm output not supported on this arch\n",
(long) code);
@@ -393,6 +410,9 @@ void monitor_disas(Monitor *mon, CPUState *env,
#else
print_insn = print_insn_little_mips;
#endif
+#elif defined(TARGET_SH4)
+ disasm_info.mach = bfd_mach_sh4;
+ print_insn = print_insn_sh;
#else
monitor_printf(mon, "0x" TARGET_FMT_lx
": Asm output not supported on this arch\n", pc);