* [Qemu-devel] [patch] Thumb disassembly
@ 2005-04-26 22:45 Paul Brook
0 siblings, 0 replies; only message in thread
From: Paul Brook @ 2005-04-26 22:45 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 99 bytes --]
The attached patch implements disassembly of arm thumb instructions in the
debugging dumps.
Paul
[-- Attachment #2: patch.qemu_disas_thumb --]
[-- Type: text/x-diff, Size: 1775 bytes --]
Index: arm-dis.c
===================================================================
RCS file: /cvsroot/qemu/qemu/arm-dis.c,v
retrieving revision 1.2
diff -u -p -r1.2 arm-dis.c
--- arm-dis.c 9 Jul 2003 17:10:32 -0000 1.2
+++ arm-dis.c 26 Apr 2005 22:41:39 -0000
@@ -1556,6 +1556,11 @@ print_insn_arm (pc, info)
}
is_thumb = force_thumb;
+ if (pc & 1)
+ {
+ is_thumb = 1;
+ pc &= ~(bfd_vma) 1;
+ }
#if 0
if (!is_thumb && info->symbols != NULL)
Index: disas.c
===================================================================
RCS file: /cvsroot/qemu/qemu/disas.c,v
retrieving revision 1.21
diff -u -p -r1.21 disas.c
--- disas.c 23 Apr 2005 18:16:07 -0000 1.21
+++ disas.c 26 Apr 2005 22:41:39 -0000
@@ -108,8 +108,20 @@ bfd_vma bfd_getb32 (const bfd_byte *addr
return (bfd_vma) v;
}
-/* Disassemble this for me please... (debugging). 'flags' is only used
- for i386: non zero means 16 bit code */
+#ifdef TARGET_ARM
+static int
+print_insn_thumb1(bfd_vma pc, disassemble_info *info)
+{
+ return print_insn_arm(pc | 1, info);
+}
+#endif
+
+/* Disassemble this for me please... (debugging). 'flags' has teh following
+ values:
+ i386 - nonzero means 16 bit code
+ arm - nonzero means thumb code
+ other targets - unused
+ */
void target_disas(FILE *out, target_ulong code, target_ulong size, int flags)
{
target_ulong pc;
@@ -137,7 +149,10 @@ void target_disas(FILE *out, target_ulon
disasm_info.mach = bfd_mach_i386_i386;
print_insn = print_insn_i386;
#elif defined(TARGET_ARM)
- print_insn = print_insn_arm;
+ if (flags)
+ print_insn = print_insn_thumb1;
+ else
+ print_insn = print_insn_arm;
#elif defined(TARGET_SPARC)
print_insn = print_insn_sparc;
#elif defined(TARGET_PPC)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-04-26 22:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-26 22:45 [Qemu-devel] [patch] Thumb disassembly Paul Brook
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.