1 /* BFD support for the SPARC architecture. 2 Copyright (C) 1992-2018 Free Software Foundation, Inc. 3 4 This file is part of BFD, the Binary File Descriptor library. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 19 MA 02110-1301, USA. */ 20 21 #include "sysdep.h" 22 #include "bfd.h" 23 #include "libbfd.h" 24 25 static const bfd_arch_info_type arch_info_struct[] = 26 { 27 { 28 32, /* bits in a word */ 29 32, /* bits in an address */ 30 8, /* bits in a byte */ 31 bfd_arch_sparc, 32 bfd_mach_sparc_sparclet, 33 "sparc", 34 "sparc:sparclet", 35 3, 36 FALSE, 37 bfd_default_compatible, 38 bfd_default_scan, 39 bfd_arch_default_fill, 40 &arch_info_struct[1], 41 }, 42 { 43 32, /* bits in a word */ 44 32, /* bits in an address */ 45 8, /* bits in a byte */ 46 bfd_arch_sparc, 47 bfd_mach_sparc_sparclite, 48 "sparc", 49 "sparc:sparclite", 50 3, 51 FALSE, 52 bfd_default_compatible, 53 bfd_default_scan, 54 bfd_arch_default_fill, 55 &arch_info_struct[2], 56 }, 57 { 58 32, /* bits in a word */ 59 32, /* bits in an address */ 60 8, /* bits in a byte */ 61 bfd_arch_sparc, 62 bfd_mach_sparc_v8plus, 63 "sparc", 64 "sparc:v8plus", 65 3, 66 FALSE, 67 bfd_default_compatible, 68 bfd_default_scan, 69 bfd_arch_default_fill, 70 &arch_info_struct[3], 71 }, 72 { 73 32, /* bits in a word */ 74 32, /* bits in an address */ 75 8, /* bits in a byte */ 76 bfd_arch_sparc, 77 bfd_mach_sparc_v8plusa, 78 "sparc", 79 "sparc:v8plusa", 80 3, 81 FALSE, 82 bfd_default_compatible, 83 bfd_default_scan, 84 bfd_arch_default_fill, 85 &arch_info_struct[4], 86 }, 87 { 88 32, /* bits in a word */ 89 32, /* bits in an address */ 90 8, /* bits in a byte */ 91 bfd_arch_sparc, 92 bfd_mach_sparc_sparclite_le, 93 "sparc", 94 "sparc:sparclite_le", 95 3, 96 FALSE, 97 bfd_default_compatible, 98 bfd_default_scan, 99 bfd_arch_default_fill, 100 &arch_info_struct[5], 101 }, 102 { 103 64, /* bits in a word */ 104 64, /* bits in an address */ 105 8, /* bits in a byte */ 106 bfd_arch_sparc, 107 bfd_mach_sparc_v9, 108 "sparc", 109 "sparc:v9", 110 3, 111 FALSE, 112 bfd_default_compatible, 113 bfd_default_scan, 114 bfd_arch_default_fill, 115 &arch_info_struct[6], 116 }, 117 { 118 64, /* bits in a word */ 119 64, /* bits in an address */ 120 8, /* bits in a byte */ 121 bfd_arch_sparc, 122 bfd_mach_sparc_v9a, 123 "sparc", 124 "sparc:v9a", 125 3, 126 FALSE, 127 bfd_default_compatible, 128 bfd_default_scan, 129 bfd_arch_default_fill, 130 &arch_info_struct[7], 131 }, 132 { 133 32, /* bits in a word */ 134 32, /* bits in an address */ 135 8, /* bits in a byte */ 136 bfd_arch_sparc, 137 bfd_mach_sparc_v8plusb, 138 "sparc", 139 "sparc:v8plusb", 140 3, 141 FALSE, 142 bfd_default_compatible, 143 bfd_default_scan, 144 bfd_arch_default_fill, 145 &arch_info_struct[8], 146 }, 147 { 148 64, /* bits in a word */ 149 64, /* bits in an address */ 150 8, /* bits in a byte */ 151 bfd_arch_sparc, 152 bfd_mach_sparc_v9b, 153 "sparc", 154 "sparc:v9b", 155 3, 156 FALSE, 157 bfd_default_compatible, 158 bfd_default_scan, 159 bfd_arch_default_fill, 160 &arch_info_struct[9], 161 }, 162 { 163 32, /* bits in a word */ 164 32, /* bits in an address */ 165 8, /* bits in a byte */ 166 bfd_arch_sparc, 167 bfd_mach_sparc_v8plusc, 168 "sparc", 169 "sparc:v8plusc", 170 3, 171 FALSE, 172 bfd_default_compatible, 173 bfd_default_scan, 174 bfd_arch_default_fill, 175 &arch_info_struct[10], 176 }, 177 { 178 64, /* bits in a word */ 179 64, /* bits in an address */ 180 8, /* bits in a byte */ 181 bfd_arch_sparc, 182 bfd_mach_sparc_v9c, 183 "sparc", 184 "sparc:v9c", 185 3, 186 FALSE, 187 bfd_default_compatible, 188 bfd_default_scan, 189 bfd_arch_default_fill, 190 &arch_info_struct[11], 191 }, 192 { 193 32, /* bits in a word */ 194 32, /* bits in an address */ 195 8, /* bits in a byte */ 196 bfd_arch_sparc, 197 bfd_mach_sparc_v8plusd, 198 "sparc", 199 "sparc:v8plusd", 200 3, 201 FALSE, 202 bfd_default_compatible, 203 bfd_default_scan, 204 bfd_arch_default_fill, 205 &arch_info_struct[12], 206 }, 207 { 208 64, /* bits in a word */ 209 64, /* bits in an address */ 210 8, /* bits in a byte */ 211 bfd_arch_sparc, 212 bfd_mach_sparc_v9d, 213 "sparc", 214 "sparc:v9d", 215 3, 216 FALSE, 217 bfd_default_compatible, 218 bfd_default_scan, 219 bfd_arch_default_fill, 220 &arch_info_struct[13], 221 }, 222 { 223 32, /* bits in a word */ 224 32, /* bits in an address */ 225 8, /* bits in a byte */ 226 bfd_arch_sparc, 227 bfd_mach_sparc_v8pluse, 228 "sparc", 229 "sparc:v8pluse", 230 3, 231 FALSE, 232 bfd_default_compatible, 233 bfd_default_scan, 234 bfd_arch_default_fill, 235 &arch_info_struct[14], 236 }, 237 { 238 64, /* bits in a word */ 239 64, /* bits in an address */ 240 8, /* bits in a byte */ 241 bfd_arch_sparc, 242 bfd_mach_sparc_v9e, 243 "sparc", 244 "sparc:v9e", 245 3, 246 FALSE, 247 bfd_default_compatible, 248 bfd_default_scan, 249 bfd_arch_default_fill, 250 &arch_info_struct[15], 251 }, 252 { 253 32, /* bits in a word */ 254 32, /* bits in an address */ 255 8, /* bits in a byte */ 256 bfd_arch_sparc, 257 bfd_mach_sparc_v8plusv, 258 "sparc", 259 "sparc:v8plusv", 260 3, 261 FALSE, 262 bfd_default_compatible, 263 bfd_default_scan, 264 bfd_arch_default_fill, 265 &arch_info_struct[16], 266 }, 267 { 268 64, /* bits in a word */ 269 64, /* bits in an address */ 270 8, /* bits in a byte */ 271 bfd_arch_sparc, 272 bfd_mach_sparc_v9v, 273 "sparc", 274 "sparc:v9v", 275 3, 276 FALSE, 277 bfd_default_compatible, 278 bfd_default_scan, 279 bfd_arch_default_fill, 280 &arch_info_struct[17], 281 }, 282 { 283 32, /* bits in a word */ 284 32, /* bits in an address */ 285 8, /* bits in a byte */ 286 bfd_arch_sparc, 287 bfd_mach_sparc_v8plusm, 288 "sparc", 289 "sparc:v8plusm", 290 3, 291 FALSE, 292 bfd_default_compatible, 293 bfd_default_scan, 294 bfd_arch_default_fill, 295 &arch_info_struct[18], 296 }, 297 { 298 64, /* bits in a word */ 299 64, /* bits in an address */ 300 8, /* bits in a byte */ 301 bfd_arch_sparc, 302 bfd_mach_sparc_v9m, 303 "sparc", 304 "sparc:v9m", 305 3, 306 FALSE, 307 bfd_default_compatible, 308 bfd_default_scan, 309 bfd_arch_default_fill, 310 &arch_info_struct[19], 311 }, 312 { 313 32, /* bits in a word */ 314 32, /* bits in an address */ 315 8, /* bits in a byte */ 316 bfd_arch_sparc, 317 bfd_mach_sparc_v8plusm8, 318 "sparc", 319 "sparc:v8plusm8", 320 3, 321 FALSE, 322 bfd_default_compatible, 323 bfd_default_scan, 324 bfd_arch_default_fill, 325 &arch_info_struct[20], 326 }, 327 { 328 64, /* bits in a word */ 329 64, /* bits in an address */ 330 8, /* bits in a byte */ 331 bfd_arch_sparc, 332 bfd_mach_sparc_v9m8, 333 "sparc", 334 "sparc:v9m8", 335 3, 336 FALSE, 337 bfd_default_compatible, 338 bfd_default_scan, 339 bfd_arch_default_fill, 340 0, 341 } 342 }; 343 344 const bfd_arch_info_type bfd_sparc_arch = 345 { 346 32, /* bits in a word */ 347 32, /* bits in an address */ 348 8, /* bits in a byte */ 349 bfd_arch_sparc, 350 bfd_mach_sparc, 351 "sparc", 352 "sparc", 353 3, 354 TRUE, /* the default */ 355 bfd_default_compatible, 356 bfd_default_scan, 357 bfd_arch_default_fill, 358 &arch_info_struct[0], 359 }; 360