1a1ba9ba4Schristos /* BFD support for the SPARC architecture. 2*184b2d41Schristos Copyright (C) 1992-2020 Free Software Foundation, Inc. 3a1ba9ba4Schristos 4a1ba9ba4Schristos This file is part of BFD, the Binary File Descriptor library. 5a1ba9ba4Schristos 6a1ba9ba4Schristos This program is free software; you can redistribute it and/or modify 7a1ba9ba4Schristos it under the terms of the GNU General Public License as published by 8a1ba9ba4Schristos the Free Software Foundation; either version 3 of the License, or 9a1ba9ba4Schristos (at your option) any later version. 10a1ba9ba4Schristos 11a1ba9ba4Schristos This program is distributed in the hope that it will be useful, 12a1ba9ba4Schristos but WITHOUT ANY WARRANTY; without even the implied warranty of 13a1ba9ba4Schristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14a1ba9ba4Schristos GNU General Public License for more details. 15a1ba9ba4Schristos 16a1ba9ba4Schristos You should have received a copy of the GNU General Public License 17a1ba9ba4Schristos along with this program; if not, write to the Free Software 18a1ba9ba4Schristos Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 19a1ba9ba4Schristos MA 02110-1301, USA. */ 20a1ba9ba4Schristos 21a1ba9ba4Schristos #include "sysdep.h" 22a1ba9ba4Schristos #include "bfd.h" 23a1ba9ba4Schristos #include "libbfd.h" 24a1ba9ba4Schristos 25*184b2d41Schristos #define N(BITS, NUMBER, PRINT, DEFAULT, NEXT) \ 26*184b2d41Schristos { \ 27*184b2d41Schristos BITS, /* Bits in a word. */ \ 28*184b2d41Schristos BITS, /* Bits in an address. */ \ 29*184b2d41Schristos 8, /* Bits in a byte. */ \ 30*184b2d41Schristos bfd_arch_sparc, \ 31*184b2d41Schristos NUMBER, \ 32*184b2d41Schristos "sparc", \ 33*184b2d41Schristos PRINT, \ 34*184b2d41Schristos 3, /* Section alignment power. */ \ 35*184b2d41Schristos DEFAULT, \ 36*184b2d41Schristos bfd_default_compatible, \ 37*184b2d41Schristos bfd_default_scan, \ 38*184b2d41Schristos bfd_arch_default_fill, \ 39*184b2d41Schristos NEXT, \ 40*184b2d41Schristos 0 /* Maximum offset of a reloc from the start of an insn. */ \ 41*184b2d41Schristos } 42*184b2d41Schristos 43a1ba9ba4Schristos static const bfd_arch_info_type arch_info_struct[] = 44a1ba9ba4Schristos { 45*184b2d41Schristos N (32, bfd_mach_sparc_sparclet, "sparc:sparclet", FALSE, arch_info_struct + 1), 46*184b2d41Schristos N (32, bfd_mach_sparc_sparclite, "sparc:sparclite", FALSE, arch_info_struct + 2), 47*184b2d41Schristos N (32, bfd_mach_sparc_v8plus, "sparc:v8plus", FALSE, arch_info_struct + 3), 48*184b2d41Schristos N (32, bfd_mach_sparc_v8plusa, "sparc:v8plusa", FALSE, arch_info_struct + 4), 49*184b2d41Schristos N (32, bfd_mach_sparc_sparclite_le, "sparc:sparclite_le", FALSE, arch_info_struct + 5), 50*184b2d41Schristos N (64, bfd_mach_sparc_v9, "sparc:v9", FALSE, arch_info_struct + 6), 51*184b2d41Schristos N (64, bfd_mach_sparc_v9a, "sparc:v9a", FALSE, arch_info_struct + 7), 52*184b2d41Schristos N (32, bfd_mach_sparc_v8plusb, "sparc:v8plusb", FALSE, arch_info_struct + 8), 53*184b2d41Schristos N (64, bfd_mach_sparc_v9b, "sparc:v9b", FALSE, arch_info_struct + 9), 54*184b2d41Schristos N (32, bfd_mach_sparc_v8plusc, "sparc:v8plusc", FALSE, arch_info_struct + 10), 55*184b2d41Schristos N (64, bfd_mach_sparc_v9c, "sparc:v9c", FALSE, arch_info_struct + 11), 56*184b2d41Schristos N (32, bfd_mach_sparc_v8plusd, "sparc:v8plusd", FALSE, arch_info_struct + 12), 57*184b2d41Schristos N (64, bfd_mach_sparc_v9d, "sparc:v9d", FALSE, arch_info_struct + 13), 58*184b2d41Schristos N (32, bfd_mach_sparc_v8pluse, "sparc:v8pluse", FALSE, arch_info_struct + 14), 59*184b2d41Schristos N (64, bfd_mach_sparc_v9e, "sparc:v9e", FALSE, arch_info_struct + 15), 60*184b2d41Schristos N (32, bfd_mach_sparc_v8plusv, "sparc:v8plusv", FALSE, arch_info_struct + 16), 61*184b2d41Schristos N (64, bfd_mach_sparc_v9v, "sparc:v9v", FALSE, arch_info_struct + 17), 62*184b2d41Schristos N (32, bfd_mach_sparc_v8plusm, "sparc:v8plusm", FALSE, arch_info_struct + 18), 63*184b2d41Schristos N (64, bfd_mach_sparc_v9m, "sparc:v9m", FALSE, arch_info_struct + 19), 64*184b2d41Schristos N (32, bfd_mach_sparc_v8plusm8, "sparc:v8plusm8", FALSE, arch_info_struct + 20), 65*184b2d41Schristos N (64, bfd_mach_sparc_v9m8, "sparc:v9m8", FALSE, NULL) 66a1ba9ba4Schristos }; 67a1ba9ba4Schristos 68a1ba9ba4Schristos const bfd_arch_info_type bfd_sparc_arch = 69*184b2d41Schristos N (32, bfd_mach_sparc, "sparc", TRUE, arch_info_struct); 70