bfd/
[deliverable/binutils-gdb.git] / opcodes / disassemble.c
index 19de8f6f8411b7d0dfb0993cdd6366c0519c1f7f..3ea45830334e720b0046379fd2a7629993a8e4e2 100644 (file)
@@ -1,6 +1,6 @@
 /* Select disassembly routine for specified architecture.
-   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004
-   Free Software Foundation, Inc.
+   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 #include "sysdep.h"
 #include "dis-asm.h"
 
 #ifdef ARCH_all
-#define ARCH_a29k
 #define ARCH_alpha
 #define ARCH_arc
 #define ARCH_arm
 #define ARCH_avr
+#define ARCH_bfin
 #define ARCH_cris
 #define ARCH_crx
 #define ARCH_d10v
 #define ARCH_d30v
 #define ARCH_dlx
+#define ARCH_fr30
+#define ARCH_frv
 #define ARCH_h8300
 #define ARCH_h8500
 #define ARCH_hppa
 #define ARCH_i386
 #define ARCH_i860
 #define ARCH_i960
-#define ARCH_ip2k
 #define ARCH_ia64
-#define ARCH_fr30
+#define ARCH_ip2k
+#define ARCH_iq2000
+#define ARCH_m32c
 #define ARCH_m32r
-#define ARCH_m68k
 #define ARCH_m68hc11
 #define ARCH_m68hc12
+#define ARCH_m68k
 #define ARCH_m88k
 #define ARCH_maxq
 #define ARCH_mcore
@@ -51,6 +54,7 @@
 #define ARCH_mmix
 #define ARCH_mn10200
 #define ARCH_mn10300
+#define ARCH_mt
 #define ARCH_msp430
 #define ARCH_ns32k
 #define ARCH_openrisc
 #define ARCH_vax
 #define ARCH_w65
 #define ARCH_xstormy16
+#define ARCH_xc16x
 #define ARCH_xtensa
+#define ARCH_z80
 #define ARCH_z8k
-#define ARCH_frv
-#define ARCH_iq2000
 #define INCLUDE_SHMEDIA
 #endif
 
+#ifdef ARCH_m32c
+#include "m32c-desc.h"
+#endif
 
 disassembler_ftype
 disassembler (abfd)
@@ -89,12 +96,6 @@ disassembler (abfd)
     {
       /* If you add a case to this table, also add it to the
         ARCH_all definition right above this function.  */
-#ifdef ARCH_a29k
-    case bfd_arch_a29k:
-      /* As far as I know we only handle big-endian 29k objects.  */
-      disassemble = print_insn_big_a29k;
-      break;
-#endif
 #ifdef ARCH_alpha
     case bfd_arch_alpha:
       disassemble = print_insn_alpha;
@@ -120,6 +121,11 @@ disassembler (abfd)
       disassemble = print_insn_avr;
       break;
 #endif
+#ifdef ARCH_bfin
+    case bfd_arch_bfin:
+      disassemble = print_insn_bfin;
+      break;
+#endif
 #ifdef ARCH_cris
     case bfd_arch_cris:
       disassemble = cris_get_disassembler (abfd);
@@ -233,6 +239,11 @@ disassembler (abfd)
       disassemble = print_insn_maxq_little;
       break;
 #endif
+#ifdef ARCH_mt
+    case bfd_arch_mt:
+      disassemble = print_insn_mt;
+      break;
+#endif
 #ifdef ARCH_msp430
     case bfd_arch_msp430:
       disassemble = print_insn_msp430;
@@ -360,11 +371,21 @@ disassembler (abfd)
       disassemble = print_insn_xstormy16;
       break;
 #endif
+#ifdef ARCH_xc16x
+    case bfd_arch_xc16x:
+      disassemble = print_insn_xc16x;
+      break;
+#endif
 #ifdef ARCH_xtensa
     case bfd_arch_xtensa:
       disassemble = print_insn_xtensa;
       break;
 #endif
+#ifdef ARCH_z80
+    case bfd_arch_z80:
+      disassemble = print_insn_z80;
+      break;
+#endif
 #ifdef ARCH_z8k
     case bfd_arch_z8k:
       if (bfd_get_mach(abfd) == bfd_mach_z8001)
@@ -387,6 +408,11 @@ disassembler (abfd)
     case bfd_arch_iq2000:
       disassemble = print_insn_iq2000;
       break;
+#endif
+#ifdef ARCH_m32c
+    case bfd_arch_m32c:
+      disassemble = print_insn_m32c;
+      break;
 #endif
     default:
       return 0;
@@ -422,6 +448,30 @@ disassemble_init_for_target (struct disassemble_info * info)
 #ifdef ARCH_arm
     case bfd_arch_arm:
       info->symbol_is_valid = arm_symbol_is_valid;
+      info->disassembler_needs_relocs = TRUE;
+      break;
+#endif
+#ifdef ARCH_ia64
+    case bfd_arch_ia64:
+      info->skip_zeroes = 16;
+      break;
+#endif
+#ifdef ARCH_tic4x
+    case bfd_arch_tic4x:
+      info->skip_zeroes = 32;
+      break;
+#endif
+#ifdef ARCH_m32c
+    case bfd_arch_m32c:
+      info->endian = BFD_ENDIAN_BIG;
+      if (! info->insn_sets)
+       {
+         info->insn_sets = cgen_bitset_create (ISA_MAX);
+         if (info->mach == bfd_mach_m16c)
+           cgen_bitset_set (info->insn_sets, ISA_M16C);
+         else
+           cgen_bitset_set (info->insn_sets, ISA_M32C);
+       }
       break;
 #endif
     default:
This page took 0.025045 seconds and 4 git commands to generate.