X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fcpu-powerpc.c;h=2c47d6323ffa661b9bdb84a8725ac8a28311936b;hb=0bf60745767d2465c81ee57ae7705a62d6d8fafe;hp=f824fff7b6ed09c77fadd3da6d963317d26b33ca;hpb=87f33987cd6376948264593f5307a9704fdb83a2;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c index f824fff7b6..2c47d6323f 100644 --- a/bfd/cpu-powerpc.c +++ b/bfd/cpu-powerpc.c @@ -1,5 +1,6 @@ /* BFD PowerPC CPU definition - Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright 1994, 1995, 1996, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. Contributed by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -16,7 +17,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "bfd.h" #include "sysdep.h" @@ -40,15 +41,80 @@ powerpc_compatible (a,b) case bfd_arch_powerpc: return bfd_default_compatible (a, b); case bfd_arch_rs6000: - if (a->mach == 0) + if (b->mach == bfd_mach_rs6k) return a; return NULL; } /*NOTREACHED*/ } -static const bfd_arch_info_type arch_info_struct[] = +const bfd_arch_info_type bfd_powerpc_archs[] = { +#if BFD_DEFAULT_TARGET_SIZE == 64 + /* Default arch must come first. */ + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc64, + "powerpc", + "powerpc:common64", + 3, + TRUE, /* default for 64 bit target */ + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[1] + }, + /* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch + being immediately after the 64 bit default. */ + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc, /* for the POWER/PowerPC common architecture */ + "powerpc", + "powerpc:common", + 3, + FALSE, + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[2], + }, +#else + /* Default arch must come first. */ + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc, /* for the POWER/PowerPC common architecture */ + "powerpc", + "powerpc:common", + 3, + TRUE, /* default for 32 bit target */ + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[1], + }, + /* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch + being immediately after the 32 bit default. */ + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc64, + "powerpc", + "powerpc:common64", + 3, + FALSE, + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[2] + }, +#endif { 32, /* 32 bits in a word */ 32, /* 32 bits in an address */ @@ -58,10 +124,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:603", 3, - false, /* not the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[1] + &bfd_powerpc_archs[3] }, { 32, /* 32 bits in a word */ @@ -72,10 +138,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:EC603e", 3, - false, /* not the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[2] + &bfd_powerpc_archs[4] }, { 32, /* 32 bits in a word */ @@ -86,10 +152,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:604", 3, - false, /* not the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[3] + &bfd_powerpc_archs[5] }, { 32, /* 32 bits in a word */ @@ -100,10 +166,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:403", 3, - false, /* not the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[4] + &bfd_powerpc_archs[6] }, { 32, /* 32 bits in a word */ @@ -114,12 +180,12 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:601", 3, - false, /* not the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[5] + &bfd_powerpc_archs[7] }, - { + { 64, /* 64 bits in a word */ 64, /* 64 bits in an address */ 8, /* 8 bits in a byte */ @@ -128,10 +194,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:620", 3, - false, /* not the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[6] + &bfd_powerpc_archs[8] }, { 64, /* 64 bits in a word */ @@ -142,10 +208,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:630", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[7] + &bfd_powerpc_archs[9] }, { 64, /* 64 bits in a word */ @@ -156,10 +222,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:a35", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[8] + &bfd_powerpc_archs[10] }, { 64, /* 64 bits in a word */ @@ -170,10 +236,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:rs64ii", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[9] + &bfd_powerpc_archs[11] }, { 64, /* 64 bits in a word */ @@ -184,10 +250,10 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:rs64iii", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[10] + &bfd_powerpc_archs[12] }, { 32, /* 32 bits in a word */ @@ -198,25 +264,37 @@ static const bfd_arch_info_type arch_info_struct[] = "powerpc", "powerpc:7400", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - 0 - } -}; - -const bfd_arch_info_type bfd_powerpc_arch = + &bfd_powerpc_archs[13] + }, { - 32, /* 32 bits in a word */ - 32, /* 32 bits in an address */ - 8, /* 8 bits in a byte */ + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ bfd_arch_powerpc, - bfd_mach_ppc, /* for the POWER/PowerPC common architecture */ + bfd_mach_ppc_e500, "powerpc", - "powerpc:common", + "powerpc:e500", + 3, + FALSE, + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[14] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_860, + "powerpc", + "powerpc:MPC8XX", 3, - true, /* the default */ - powerpc_compatible, + FALSE, /* not the default */ + powerpc_compatible, bfd_default_scan, - &arch_info_struct[0] - }; + 0 + } +};