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