1/* BFD back-end for rs6000 support 2 Copyright 1990, 1991, 1993, 1995, 2000, 2002, 2003, 2005, 2007 3 Free Software Foundation, Inc. 4 Written by Mimi Phuong-Thao Vo of IBM 5 and John Gilmore of Cygnus Support. 6 7 This file is part of BFD, the Binary File Descriptor library. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; if not, write to the Free Software 21 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 22 MA 02110-1301, USA. */ 23 24#include "sysdep.h" 25#include "bfd.h" 26#include "libbfd.h" 27 28/* The RS/6000 architecture is compatible with the PowerPC common 29 architecture. */ 30 31static const bfd_arch_info_type *rs6000_compatible 32 PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *)); 33 34static const bfd_arch_info_type * 35rs6000_compatible (a,b) 36 const bfd_arch_info_type *a; 37 const bfd_arch_info_type *b; 38{ 39 BFD_ASSERT (a->arch == bfd_arch_rs6000); 40 switch (b->arch) 41 { 42 default: 43 return NULL; 44 case bfd_arch_rs6000: 45 return bfd_default_compatible (a, b); 46 case bfd_arch_powerpc: 47 if (a->mach == bfd_mach_rs6k) 48 return b; 49 return NULL; 50 } 51 /*NOTREACHED*/ 52} 53 54static const bfd_arch_info_type arch_info_struct[] = 55{ 56 { 57 32, /* 32 bits in a word */ 58 32, /* 32 bits in an address */ 59 8, /* 8 bits in a byte */ 60 bfd_arch_rs6000, 61 bfd_mach_rs6k_rs1, 62 "rs6000", 63 "rs6000:rs1", 64 3, 65 FALSE, /* not the default */ 66 rs6000_compatible, 67 bfd_default_scan, 68 &arch_info_struct[1] 69 }, 70 { 71 32, /* 32 bits in a word */ 72 32, /* 32 bits in an address */ 73 8, /* 8 bits in a byte */ 74 bfd_arch_rs6000, 75 bfd_mach_rs6k_rsc, 76 "rs6000", 77 "rs6000:rsc", 78 3, 79 FALSE, /* not the default */ 80 rs6000_compatible, 81 bfd_default_scan, 82 &arch_info_struct[2] 83 }, 84 { 85 32, /* 32 bits in a word */ 86 32, /* 32 bits in an address */ 87 8, /* 8 bits in a byte */ 88 bfd_arch_rs6000, 89 bfd_mach_rs6k_rs2, 90 "rs6000", 91 "rs6000:rs2", 92 3, 93 FALSE, /* not the default */ 94 rs6000_compatible, 95 bfd_default_scan, 96 0 97 } 98}; 99 100const bfd_arch_info_type bfd_rs6000_arch = 101 { 102 32, /* 32 bits in a word */ 103 32, /* 32 bits in an address */ 104 8, /* 8 bits in a byte */ 105 bfd_arch_rs6000, 106 bfd_mach_rs6k, /* POWER common architecture */ 107 "rs6000", 108 "rs6000:6000", 109 3, 110 TRUE, /* the default */ 111 rs6000_compatible, 112 bfd_default_scan, 113 &arch_info_struct[0] 114 }; 115