1230557Sjimharris/* Select disassembly routine for specified architecture.
2230557Sjimharris   Copyright (C) 1994-2017 Free Software Foundation, Inc.
3230557Sjimharris
4230557Sjimharris   This file is part of the GNU opcodes library.
5230557Sjimharris
6230557Sjimharris   This library is free software; you can redistribute it and/or modify
7230557Sjimharris   it under the terms of the GNU General Public License as published by
8230557Sjimharris   the Free Software Foundation; either version 3 of the License, or
9230557Sjimharris   (at your option) any later version.
10230557Sjimharris
11230557Sjimharris   This program is distributed in the hope that it will be useful,
12230557Sjimharris   but WITHOUT ANY WARRANTY; without even the implied warranty of
13230557Sjimharris   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14230557Sjimharris   GNU General Public License for more details.
15230557Sjimharris
16230557Sjimharris   You should have received a copy of the GNU General Public License
17230557Sjimharris   along with this program; if not, write to the Free Software
18230557Sjimharris   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19230557Sjimharris   MA 02110-1301, USA.  */
20230557Sjimharris
21230557Sjimharris#include "sysdep.h"
22230557Sjimharris#include "dis-asm.h"
23230557Sjimharris
24230557Sjimharris#ifdef ARCH_all
25230557Sjimharris#define ARCH_aarch64
26230557Sjimharris#define ARCH_alpha
27230557Sjimharris#define ARCH_arc
28230557Sjimharris#define ARCH_arm
29230557Sjimharris#define ARCH_avr
30230557Sjimharris#define ARCH_bfin
31230557Sjimharris#define ARCH_cr16
32230557Sjimharris#define ARCH_cris
33230557Sjimharris#define ARCH_crx
34230557Sjimharris#define ARCH_d10v
35230557Sjimharris#define ARCH_d30v
36230557Sjimharris#define ARCH_dlx
37230557Sjimharris#define ARCH_epiphany
38230557Sjimharris#define ARCH_fr30
39230557Sjimharris#define ARCH_frv
40230557Sjimharris#define ARCH_ft32
41230557Sjimharris#define ARCH_h8300
42230557Sjimharris#define ARCH_h8500
43230557Sjimharris#define ARCH_hppa
44230557Sjimharris#define ARCH_i370
45230557Sjimharris#define ARCH_i386
46230557Sjimharris#define ARCH_i860
47230557Sjimharris#define ARCH_i960
48230557Sjimharris#define ARCH_ia64
49230557Sjimharris#define ARCH_ip2k
50230557Sjimharris#define ARCH_iq2000
51230557Sjimharris#define ARCH_lm32
52230557Sjimharris#define ARCH_m32c
53230557Sjimharris#define ARCH_m32r
54230557Sjimharris#define ARCH_m68hc11
55230557Sjimharris#define ARCH_m68hc12
56230557Sjimharris#define ARCH_m68k
57230557Sjimharris#define ARCH_m88k
58230557Sjimharris#define ARCH_mcore
59230557Sjimharris#define ARCH_mep
60230557Sjimharris#define ARCH_metag
61230557Sjimharris#define ARCH_microblaze
62230557Sjimharris#define ARCH_mips
63230557Sjimharris#define ARCH_mmix
64230557Sjimharris#define ARCH_mn10200
65230557Sjimharris#define ARCH_mn10300
66230557Sjimharris#define ARCH_moxie
67230557Sjimharris#define ARCH_mt
68230557Sjimharris#define ARCH_msp430
69230557Sjimharris#define ARCH_nds32
70230557Sjimharris#define ARCH_nios2
71230557Sjimharris#define ARCH_ns32k
72230557Sjimharris#define ARCH_or1k
73230557Sjimharris#define ARCH_pdp11
74230557Sjimharris#define ARCH_pj
75230557Sjimharris#define ARCH_powerpc
76230557Sjimharris#define ARCH_rs6000
77230557Sjimharris#define ARCH_rl78
78230557Sjimharris#define ARCH_rx
79230557Sjimharris#define ARCH_s390
80230557Sjimharris#define ARCH_score
81230557Sjimharris#define ARCH_sh
82230557Sjimharris#define ARCH_sparc
83230557Sjimharris#define ARCH_spu
84230557Sjimharris#define ARCH_tic30
85230557Sjimharris#define ARCH_tic4x
86230557Sjimharris#define ARCH_tic54x
87230557Sjimharris#define ARCH_tic6x
88230557Sjimharris#define ARCH_tic80
89230557Sjimharris#define ARCH_tilegx
90230557Sjimharris#define ARCH_tilepro
91230557Sjimharris#define ARCH_v850
92230557Sjimharris#define ARCH_vax
93230557Sjimharris#define ARCH_visium
94230557Sjimharris#define ARCH_w65
95230557Sjimharris#define ARCH_xstormy16
96230557Sjimharris#define ARCH_xc16x
97230557Sjimharris#define ARCH_xgate
98230557Sjimharris#define ARCH_xtensa
99230557Sjimharris#define ARCH_z80
100230557Sjimharris#define ARCH_z8k
101230557Sjimharris#define INCLUDE_SHMEDIA
102230557Sjimharris#endif
103230557Sjimharris
104230557Sjimharris#ifdef ARCH_m32c
105230557Sjimharris#include "m32c-desc.h"
106230557Sjimharris#endif
107230557Sjimharris
108230557Sjimharrisdisassembler_ftype
109230557Sjimharrisdisassembler (bfd *abfd)
110230557Sjimharris{
111230557Sjimharris  enum bfd_architecture a = bfd_get_arch (abfd);
112230557Sjimharris  disassembler_ftype disassemble;
113230557Sjimharris
114230557Sjimharris  switch (a)
115230557Sjimharris    {
116230557Sjimharris      /* If you add a case to this table, also add it to the
117230557Sjimharris	 ARCH_all definition right above this function.  */
118230557Sjimharris#ifdef ARCH_aarch64
119230557Sjimharris    case bfd_arch_aarch64:
120230557Sjimharris      disassemble = print_insn_aarch64;
121230557Sjimharris      break;
122230557Sjimharris#endif
123230557Sjimharris#ifdef ARCH_alpha
124230557Sjimharris    case bfd_arch_alpha:
125230557Sjimharris      disassemble = print_insn_alpha;
126230557Sjimharris      break;
127230557Sjimharris#endif
128230557Sjimharris#ifdef ARCH_arc
129230557Sjimharris    case bfd_arch_arc:
130230557Sjimharris      disassemble = arc_get_disassembler (abfd);
131230557Sjimharris      break;
132230557Sjimharris#endif
133230557Sjimharris#ifdef ARCH_arm
134230557Sjimharris    case bfd_arch_arm:
135230557Sjimharris      if (bfd_big_endian (abfd))
136230557Sjimharris	disassemble = print_insn_big_arm;
137230557Sjimharris      else
138230557Sjimharris	disassemble = print_insn_little_arm;
139230557Sjimharris      break;
140230557Sjimharris#endif
141230557Sjimharris#ifdef ARCH_avr
142230557Sjimharris    case bfd_arch_avr:
143230557Sjimharris      disassemble = print_insn_avr;
144230557Sjimharris      break;
145230557Sjimharris#endif
146230557Sjimharris#ifdef ARCH_bfin
147230557Sjimharris    case bfd_arch_bfin:
148230557Sjimharris      disassemble = print_insn_bfin;
149230557Sjimharris      break;
150230557Sjimharris#endif
151230557Sjimharris#ifdef ARCH_cr16
152230557Sjimharris    case bfd_arch_cr16:
153230557Sjimharris      disassemble = print_insn_cr16;
154230557Sjimharris      break;
155230557Sjimharris#endif
156230557Sjimharris#ifdef ARCH_cris
157230557Sjimharris    case bfd_arch_cris:
158230557Sjimharris      disassemble = cris_get_disassembler (abfd);
159230557Sjimharris      break;
160230557Sjimharris#endif
161230557Sjimharris#ifdef ARCH_crx
162230557Sjimharris    case bfd_arch_crx:
163230557Sjimharris      disassemble = print_insn_crx;
164230557Sjimharris      break;
165230557Sjimharris#endif
166230557Sjimharris#ifdef ARCH_d10v
167230557Sjimharris    case bfd_arch_d10v:
168230557Sjimharris      disassemble = print_insn_d10v;
169230557Sjimharris      break;
170230557Sjimharris#endif
171230557Sjimharris#ifdef ARCH_d30v
172230557Sjimharris    case bfd_arch_d30v:
173230557Sjimharris      disassemble = print_insn_d30v;
174230557Sjimharris      break;
175230557Sjimharris#endif
176230557Sjimharris#ifdef ARCH_dlx
177230557Sjimharris    case bfd_arch_dlx:
178230557Sjimharris      /* As far as I know we only handle big-endian DLX objects.  */
179230557Sjimharris      disassemble = print_insn_dlx;
180230557Sjimharris      break;
181230557Sjimharris#endif
182230557Sjimharris#ifdef ARCH_h8300
183230557Sjimharris    case bfd_arch_h8300:
184230557Sjimharris      if (bfd_get_mach (abfd) == bfd_mach_h8300h
185230557Sjimharris	  || bfd_get_mach (abfd) == bfd_mach_h8300hn)
186230557Sjimharris	disassemble = print_insn_h8300h;
187230557Sjimharris      else if (bfd_get_mach (abfd) == bfd_mach_h8300s
188230557Sjimharris	       || bfd_get_mach (abfd) == bfd_mach_h8300sn
189230557Sjimharris	       || bfd_get_mach (abfd) == bfd_mach_h8300sx
190230557Sjimharris	       || bfd_get_mach (abfd) == bfd_mach_h8300sxn)
191230557Sjimharris	disassemble = print_insn_h8300s;
192230557Sjimharris      else
193230557Sjimharris	disassemble = print_insn_h8300;
194230557Sjimharris      break;
195230557Sjimharris#endif
196230557Sjimharris#ifdef ARCH_h8500
197230557Sjimharris    case bfd_arch_h8500:
198230557Sjimharris      disassemble = print_insn_h8500;
199230557Sjimharris      break;
200230557Sjimharris#endif
201230557Sjimharris#ifdef ARCH_hppa
202230557Sjimharris    case bfd_arch_hppa:
203230557Sjimharris      disassemble = print_insn_hppa;
204230557Sjimharris      break;
205230557Sjimharris#endif
206230557Sjimharris#ifdef ARCH_i370
207230557Sjimharris    case bfd_arch_i370:
208230557Sjimharris      disassemble = print_insn_i370;
209230557Sjimharris      break;
210230557Sjimharris#endif
211230557Sjimharris#ifdef ARCH_i386
212230557Sjimharris    case bfd_arch_i386:
213230557Sjimharris    case bfd_arch_iamcu:
214230557Sjimharris    case bfd_arch_l1om:
215230557Sjimharris    case bfd_arch_k1om:
216230557Sjimharris      disassemble = print_insn_i386;
217230557Sjimharris      break;
218230557Sjimharris#endif
219230557Sjimharris#ifdef ARCH_i860
220230557Sjimharris    case bfd_arch_i860:
221230557Sjimharris      disassemble = print_insn_i860;
222230557Sjimharris      break;
223230557Sjimharris#endif
224230557Sjimharris#ifdef ARCH_i960
225230557Sjimharris    case bfd_arch_i960:
226230557Sjimharris      disassemble = print_insn_i960;
227230557Sjimharris      break;
228230557Sjimharris#endif
229230557Sjimharris#ifdef ARCH_ia64
230230557Sjimharris    case bfd_arch_ia64:
231230557Sjimharris      disassemble = print_insn_ia64;
232230557Sjimharris      break;
233230557Sjimharris#endif
234230557Sjimharris#ifdef ARCH_ip2k
235230557Sjimharris    case bfd_arch_ip2k:
236230557Sjimharris      disassemble = print_insn_ip2k;
237230557Sjimharris      break;
238230557Sjimharris#endif
239230557Sjimharris#ifdef ARCH_epiphany
240230557Sjimharris    case bfd_arch_epiphany:
241230557Sjimharris      disassemble = print_insn_epiphany;
242230557Sjimharris      break;
243230557Sjimharris#endif
244230557Sjimharris#ifdef ARCH_fr30
245230557Sjimharris    case bfd_arch_fr30:
246230557Sjimharris      disassemble = print_insn_fr30;
247230557Sjimharris      break;
248230557Sjimharris#endif
249230557Sjimharris#ifdef ARCH_lm32
250230557Sjimharris    case bfd_arch_lm32:
251230557Sjimharris      disassemble = print_insn_lm32;
252230557Sjimharris      break;
253230557Sjimharris#endif
254230557Sjimharris#ifdef ARCH_m32r
255230557Sjimharris    case bfd_arch_m32r:
256230557Sjimharris      disassemble = print_insn_m32r;
257230557Sjimharris      break;
258230557Sjimharris#endif
259230557Sjimharris#if defined(ARCH_m68hc11) || defined(ARCH_m68hc12) \
260230557Sjimharris    || defined(ARCH_9s12x) || defined(ARCH_m9s12xg)
261230557Sjimharris    case bfd_arch_m68hc11:
262230557Sjimharris      disassemble = print_insn_m68hc11;
263230557Sjimharris      break;
264230557Sjimharris    case bfd_arch_m68hc12:
265230557Sjimharris      disassemble = print_insn_m68hc12;
266230557Sjimharris      break;
267230557Sjimharris    case bfd_arch_m9s12x:
268230557Sjimharris      disassemble = print_insn_m9s12x;
269230557Sjimharris      break;
270230557Sjimharris    case bfd_arch_m9s12xg:
271230557Sjimharris      disassemble = print_insn_m9s12xg;
272230557Sjimharris      break;
273230557Sjimharris#endif
274230557Sjimharris#ifdef ARCH_m68k
275230557Sjimharris    case bfd_arch_m68k:
276230557Sjimharris      disassemble = print_insn_m68k;
277230557Sjimharris      break;
278230557Sjimharris#endif
279230557Sjimharris#ifdef ARCH_m88k
280230557Sjimharris    case bfd_arch_m88k:
281230557Sjimharris      disassemble = print_insn_m88k;
282230557Sjimharris      break;
283230557Sjimharris#endif
284230557Sjimharris#ifdef ARCH_mt
285230557Sjimharris    case bfd_arch_mt:
286230557Sjimharris      disassemble = print_insn_mt;
287230557Sjimharris      break;
288230557Sjimharris#endif
289230557Sjimharris#ifdef ARCH_microblaze
290230557Sjimharris    case bfd_arch_microblaze:
291230557Sjimharris      disassemble = print_insn_microblaze;
292230557Sjimharris      break;
293230557Sjimharris#endif
294230557Sjimharris#ifdef ARCH_msp430
295230557Sjimharris    case bfd_arch_msp430:
296230557Sjimharris      disassemble = print_insn_msp430;
297230557Sjimharris      break;
298230557Sjimharris#endif
299230557Sjimharris#ifdef ARCH_nds32
300230557Sjimharris    case bfd_arch_nds32:
301230557Sjimharris      disassemble = print_insn_nds32;
302230557Sjimharris      break;
303230557Sjimharris#endif
304230557Sjimharris#ifdef ARCH_ns32k
305230557Sjimharris    case bfd_arch_ns32k:
306230557Sjimharris      disassemble = print_insn_ns32k;
307230557Sjimharris      break;
308230557Sjimharris#endif
309230557Sjimharris#ifdef ARCH_mcore
310230557Sjimharris    case bfd_arch_mcore:
311230557Sjimharris      disassemble = print_insn_mcore;
312230557Sjimharris      break;
313230557Sjimharris#endif
314230557Sjimharris#ifdef ARCH_mep
315230557Sjimharris    case bfd_arch_mep:
316230557Sjimharris      disassemble = print_insn_mep;
317230557Sjimharris      break;
318230557Sjimharris#endif
319230557Sjimharris#ifdef ARCH_metag
320230557Sjimharris    case bfd_arch_metag:
321230557Sjimharris      disassemble = print_insn_metag;
322230557Sjimharris      break;
323230557Sjimharris#endif
324230557Sjimharris#ifdef ARCH_mips
325230557Sjimharris    case bfd_arch_mips:
326230557Sjimharris      if (bfd_big_endian (abfd))
327230557Sjimharris	disassemble = print_insn_big_mips;
328230557Sjimharris      else
329230557Sjimharris	disassemble = print_insn_little_mips;
330230557Sjimharris      break;
331230557Sjimharris#endif
332230557Sjimharris#ifdef ARCH_mmix
333230557Sjimharris    case bfd_arch_mmix:
334230557Sjimharris      disassemble = print_insn_mmix;
335230557Sjimharris      break;
336230557Sjimharris#endif
337230557Sjimharris#ifdef ARCH_mn10200
338230557Sjimharris    case bfd_arch_mn10200:
339230557Sjimharris      disassemble = print_insn_mn10200;
340230557Sjimharris      break;
341230557Sjimharris#endif
342230557Sjimharris#ifdef ARCH_mn10300
343230557Sjimharris    case bfd_arch_mn10300:
344230557Sjimharris      disassemble = print_insn_mn10300;
345230557Sjimharris      break;
346230557Sjimharris#endif
347230557Sjimharris#ifdef ARCH_nios2
348230557Sjimharris    case bfd_arch_nios2:
349230557Sjimharris      if (bfd_big_endian (abfd))
350230557Sjimharris	disassemble = print_insn_big_nios2;
351230557Sjimharris      else
352230557Sjimharris	disassemble = print_insn_little_nios2;
353230557Sjimharris      break;
354230557Sjimharris#endif
355230557Sjimharris#ifdef ARCH_or1k
356230557Sjimharris    case bfd_arch_or1k:
357230557Sjimharris      disassemble = print_insn_or1k;
358230557Sjimharris      break;
359230557Sjimharris#endif
360230557Sjimharris#ifdef ARCH_pdp11
361230557Sjimharris    case bfd_arch_pdp11:
362230557Sjimharris      disassemble = print_insn_pdp11;
363230557Sjimharris      break;
364230557Sjimharris#endif
365231137Sjimharris#ifdef ARCH_pj
366231137Sjimharris    case bfd_arch_pj:
367230557Sjimharris      disassemble = print_insn_pj;
368230557Sjimharris      break;
369230557Sjimharris#endif
370230557Sjimharris#ifdef ARCH_powerpc
371230557Sjimharris    case bfd_arch_powerpc:
372230557Sjimharris      if (bfd_big_endian (abfd))
373230557Sjimharris	disassemble = print_insn_big_powerpc;
374230557Sjimharris      else
375231137Sjimharris	disassemble = print_insn_little_powerpc;
376230557Sjimharris      break;
377230557Sjimharris#endif
378230557Sjimharris#ifdef ARCH_riscv
379230557Sjimharris    case bfd_arch_riscv:
380230557Sjimharris      disassemble = print_insn_riscv;
381230557Sjimharris      break;
382230557Sjimharris#endif
383230557Sjimharris#ifdef ARCH_rs6000
384230557Sjimharris    case bfd_arch_rs6000:
385230557Sjimharris      if (bfd_get_mach (abfd) == bfd_mach_ppc_620)
386230557Sjimharris	disassemble = print_insn_big_powerpc;
387230557Sjimharris      else
388230557Sjimharris	disassemble = print_insn_rs6000;
389230557Sjimharris      break;
390230557Sjimharris#endif
391230557Sjimharris#ifdef ARCH_rl78
392230557Sjimharris    case bfd_arch_rl78:
393230557Sjimharris      disassemble = rl78_get_disassembler (abfd);
394230557Sjimharris      break;
395230557Sjimharris#endif
396230557Sjimharris#ifdef ARCH_rx
397230557Sjimharris    case bfd_arch_rx:
398230557Sjimharris      disassemble = print_insn_rx;
399230557Sjimharris      break;
400230557Sjimharris#endif
401230557Sjimharris#ifdef ARCH_s390
402230557Sjimharris    case bfd_arch_s390:
403230557Sjimharris      disassemble = print_insn_s390;
404230557Sjimharris      break;
405230557Sjimharris#endif
406230557Sjimharris#ifdef ARCH_score
407230557Sjimharris    case bfd_arch_score:
408230557Sjimharris      if (bfd_big_endian (abfd))
409230557Sjimharris	disassemble = print_insn_big_score;
410230557Sjimharris      else
411230557Sjimharris	disassemble = print_insn_little_score;
412230557Sjimharris     break;
413230557Sjimharris#endif
414230557Sjimharris#ifdef ARCH_sh
415230557Sjimharris    case bfd_arch_sh:
416230557Sjimharris      disassemble = print_insn_sh;
417230557Sjimharris      break;
418230557Sjimharris#endif
419230557Sjimharris#ifdef ARCH_sparc
420230557Sjimharris    case bfd_arch_sparc:
421230557Sjimharris      disassemble = print_insn_sparc;
422230557Sjimharris      break;
423230557Sjimharris#endif
424230557Sjimharris#ifdef ARCH_spu
425230557Sjimharris    case bfd_arch_spu:
426230557Sjimharris      disassemble = print_insn_spu;
427230557Sjimharris      break;
428230557Sjimharris#endif
429230557Sjimharris#ifdef ARCH_tic30
430230557Sjimharris    case bfd_arch_tic30:
431230557Sjimharris      disassemble = print_insn_tic30;
432230557Sjimharris      break;
433230557Sjimharris#endif
434230557Sjimharris#ifdef ARCH_tic4x
435230557Sjimharris    case bfd_arch_tic4x:
436230557Sjimharris      disassemble = print_insn_tic4x;
437230557Sjimharris      break;
438230557Sjimharris#endif
439230557Sjimharris#ifdef ARCH_tic54x
440230557Sjimharris    case bfd_arch_tic54x:
441230557Sjimharris      disassemble = print_insn_tic54x;
442230557Sjimharris      break;
443230557Sjimharris#endif
444230557Sjimharris#ifdef ARCH_tic6x
445230557Sjimharris    case bfd_arch_tic6x:
446230557Sjimharris      disassemble = print_insn_tic6x;
447230557Sjimharris      break;
448230557Sjimharris#endif
449230557Sjimharris#ifdef ARCH_tic80
450230557Sjimharris    case bfd_arch_tic80:
451230557Sjimharris      disassemble = print_insn_tic80;
452230557Sjimharris      break;
453230557Sjimharris#endif
454230557Sjimharris#ifdef ARCH_ft32
455230557Sjimharris    case bfd_arch_ft32:
456230557Sjimharris      disassemble = print_insn_ft32;
457230557Sjimharris      break;
458230557Sjimharris#endif
459230557Sjimharris#ifdef ARCH_v850
460230557Sjimharris    case bfd_arch_v850:
461230557Sjimharris    case bfd_arch_v850_rh850:
462230557Sjimharris      disassemble = print_insn_v850;
463230557Sjimharris      break;
464230557Sjimharris#endif
465230557Sjimharris#ifdef ARCH_w65
466230557Sjimharris    case bfd_arch_w65:
467230557Sjimharris      disassemble = print_insn_w65;
468230557Sjimharris      break;
469230557Sjimharris#endif
470230557Sjimharris#ifdef ARCH_xgate
471230557Sjimharris    case bfd_arch_xgate:
472230557Sjimharris      disassemble = print_insn_xgate;
473230557Sjimharris      break;
474230557Sjimharris#endif
475230557Sjimharris#ifdef ARCH_xstormy16
476230557Sjimharris    case bfd_arch_xstormy16:
477230557Sjimharris      disassemble = print_insn_xstormy16;
478230557Sjimharris      break;
479230557Sjimharris#endif
480230557Sjimharris#ifdef ARCH_xc16x
481230557Sjimharris    case bfd_arch_xc16x:
482230557Sjimharris      disassemble = print_insn_xc16x;
483230557Sjimharris      break;
484230557Sjimharris#endif
485230557Sjimharris#ifdef ARCH_xtensa
486230557Sjimharris    case bfd_arch_xtensa:
487230557Sjimharris      disassemble = print_insn_xtensa;
488230557Sjimharris      break;
489230557Sjimharris#endif
490230557Sjimharris#ifdef ARCH_z80
491230557Sjimharris    case bfd_arch_z80:
492230557Sjimharris      disassemble = print_insn_z80;
493230557Sjimharris      break;
494230557Sjimharris#endif
495230557Sjimharris#ifdef ARCH_z8k
496230557Sjimharris    case bfd_arch_z8k:
497230557Sjimharris      if (bfd_get_mach(abfd) == bfd_mach_z8001)
498230557Sjimharris	disassemble = print_insn_z8001;
499230557Sjimharris      else
500230557Sjimharris	disassemble = print_insn_z8002;
501230557Sjimharris      break;
502230557Sjimharris#endif
503230557Sjimharris#ifdef ARCH_vax
504230557Sjimharris    case bfd_arch_vax:
505230557Sjimharris      disassemble = print_insn_vax;
506230557Sjimharris      break;
507230557Sjimharris#endif
508230557Sjimharris#ifdef ARCH_visium
509230557Sjimharris     case bfd_arch_visium:
510230557Sjimharris       disassemble = print_insn_visium;
511230557Sjimharris       break;
512230557Sjimharris#endif
513230557Sjimharris#ifdef ARCH_frv
514230557Sjimharris    case bfd_arch_frv:
515230557Sjimharris      disassemble = print_insn_frv;
516230557Sjimharris      break;
517230557Sjimharris#endif
518230557Sjimharris#ifdef ARCH_moxie
519230557Sjimharris    case bfd_arch_moxie:
520230557Sjimharris      disassemble = print_insn_moxie;
521230557Sjimharris      break;
522230557Sjimharris#endif
523230557Sjimharris#ifdef ARCH_iq2000
524230557Sjimharris    case bfd_arch_iq2000:
525230557Sjimharris      disassemble = print_insn_iq2000;
526230557Sjimharris      break;
527230557Sjimharris#endif
528230557Sjimharris#ifdef ARCH_m32c
529230557Sjimharris    case bfd_arch_m32c:
530230557Sjimharris      disassemble = print_insn_m32c;
531230557Sjimharris      break;
532230557Sjimharris#endif
533230557Sjimharris#ifdef ARCH_tilegx
534230557Sjimharris    case bfd_arch_tilegx:
535230557Sjimharris      disassemble = print_insn_tilegx;
536230557Sjimharris      break;
537230557Sjimharris#endif
538230557Sjimharris#ifdef ARCH_tilepro
539230557Sjimharris    case bfd_arch_tilepro:
540230557Sjimharris      disassemble = print_insn_tilepro;
541230557Sjimharris      break;
542230557Sjimharris#endif
543230557Sjimharris    default:
544230557Sjimharris      return 0;
545230557Sjimharris    }
546230557Sjimharris  return disassemble;
547230557Sjimharris}
548230557Sjimharris
549230557Sjimharrisvoid
550230557Sjimharrisdisassembler_usage (FILE *stream ATTRIBUTE_UNUSED)
551230557Sjimharris{
552230557Sjimharris#ifdef ARCH_aarch64
553230557Sjimharris  print_aarch64_disassembler_options (stream);
554230557Sjimharris#endif
555230557Sjimharris#ifdef ARCH_arc
556230557Sjimharris  print_arc_disassembler_options (stream);
557230557Sjimharris#endif
558230557Sjimharris#ifdef ARCH_arm
559230557Sjimharris  print_arm_disassembler_options (stream);
560230557Sjimharris#endif
561230557Sjimharris#ifdef ARCH_mips
562230557Sjimharris  print_mips_disassembler_options (stream);
563230557Sjimharris#endif
564230557Sjimharris#ifdef ARCH_powerpc
565230557Sjimharris  print_ppc_disassembler_options (stream);
566230557Sjimharris#endif
567230557Sjimharris#ifdef ARCH_riscv
568230557Sjimharris  print_riscv_disassembler_options (stream);
569230557Sjimharris#endif
570230557Sjimharris#ifdef ARCH_i386
571230557Sjimharris  print_i386_disassembler_options (stream);
572230557Sjimharris#endif
573230557Sjimharris#ifdef ARCH_s390
574230557Sjimharris  print_s390_disassembler_options (stream);
575230557Sjimharris#endif
576230557Sjimharris
577230557Sjimharris  return;
578230557Sjimharris}
579230557Sjimharris
580230557Sjimharrisvoid
581230557Sjimharrisdisassemble_init_for_target (struct disassemble_info * info)
582230557Sjimharris{
583230557Sjimharris  if (info == NULL)
584230557Sjimharris    return;
585230557Sjimharris
586230557Sjimharris  switch (info->arch)
587230557Sjimharris    {
588230557Sjimharris#ifdef ARCH_aarch64
589230557Sjimharris    case bfd_arch_aarch64:
590230557Sjimharris      info->symbol_is_valid = aarch64_symbol_is_valid;
591230557Sjimharris      info->disassembler_needs_relocs = TRUE;
592230557Sjimharris      break;
593230557Sjimharris#endif
594230557Sjimharris#ifdef ARCH_arm
595230557Sjimharris    case bfd_arch_arm:
596230557Sjimharris      info->symbol_is_valid = arm_symbol_is_valid;
597230557Sjimharris      info->disassembler_needs_relocs = TRUE;
598230557Sjimharris      break;
599230557Sjimharris#endif
600230557Sjimharris#ifdef ARCH_ia64
601230557Sjimharris    case bfd_arch_ia64:
602230557Sjimharris      info->skip_zeroes = 16;
603230557Sjimharris      break;
604230557Sjimharris#endif
605230557Sjimharris#ifdef ARCH_tic4x
606230557Sjimharris    case bfd_arch_tic4x:
607230557Sjimharris      info->skip_zeroes = 32;
608230557Sjimharris      break;
609230557Sjimharris#endif
610230557Sjimharris#ifdef ARCH_mep
611230557Sjimharris    case bfd_arch_mep:
612230557Sjimharris      info->skip_zeroes = 256;
613230557Sjimharris      info->skip_zeroes_at_end = 0;
614230557Sjimharris      break;
615230557Sjimharris#endif
616230557Sjimharris#ifdef ARCH_metag
617230557Sjimharris    case bfd_arch_metag:
618230557Sjimharris      info->disassembler_needs_relocs = TRUE;
619230557Sjimharris      break;
620230557Sjimharris#endif
621230557Sjimharris#ifdef ARCH_m32c
622230557Sjimharris    case bfd_arch_m32c:
623230557Sjimharris      /* This processor in fact is little endian.  The value set here
624230557Sjimharris	 reflects the way opcodes are written in the cgen description.  */
625230557Sjimharris      info->endian = BFD_ENDIAN_BIG;
626230557Sjimharris      if (! info->insn_sets)
627230557Sjimharris	{
628230557Sjimharris	  info->insn_sets = cgen_bitset_create (ISA_MAX);
629230557Sjimharris	  if (info->mach == bfd_mach_m16c)
630230557Sjimharris	    cgen_bitset_set (info->insn_sets, ISA_M16C);
631230557Sjimharris	  else
632230557Sjimharris	    cgen_bitset_set (info->insn_sets, ISA_M32C);
633230557Sjimharris	}
634230557Sjimharris      break;
635230557Sjimharris#endif
636230557Sjimharris#ifdef ARCH_powerpc
637230557Sjimharris    case bfd_arch_powerpc:
638230557Sjimharris#endif
639230557Sjimharris#ifdef ARCH_rs6000
640230557Sjimharris    case bfd_arch_rs6000:
641230557Sjimharris#endif
642230557Sjimharris#if defined (ARCH_powerpc) || defined (ARCH_rs6000)
643230557Sjimharris      disassemble_init_powerpc (info);
644230557Sjimharris      break;
645230557Sjimharris#endif
646230557Sjimharris    default:
647230557Sjimharris      break;
648230557Sjimharris    }
649230557Sjimharris}
650230557Sjimharris