X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fcpu-powerpc.c;h=bfe4868159294c274034ca4b0298144f1ed82665;hb=9a49df9d4bfc7ff03fed751e12b1bc32fbee4fb2;hp=55236697d716c79aa4d9273359125f2b5f7a8d32;hpb=feee612b24c47ca30fa6efc2e31ca28ff0887ce9;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c index 55236697d7..bfe4868159 100644 --- a/bfd/cpu-powerpc.c +++ b/bfd/cpu-powerpc.c @@ -1,37 +1,33 @@ /* BFD PowerPC CPU definition - Copyright 1994, 1995, 1996, 2000, 2001, 2002 - Free Software Foundation, Inc. + Copyright (C) 1994-2019 Free Software Foundation, Inc. Contributed by Ian Lance Taylor, Cygnus Support. -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. */ + 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., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ -#include "bfd.h" #include "sysdep.h" +#include "bfd.h" #include "libbfd.h" /* The common PowerPC architecture is compatible with the RS/6000. */ -static const bfd_arch_info_type *powerpc_compatible - PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *)); - static const bfd_arch_info_type * -powerpc_compatible (a,b) - const bfd_arch_info_type *a; - const bfd_arch_info_type *b; +powerpc_compatible (const bfd_arch_info_type *a, + const bfd_arch_info_type *b) { BFD_ASSERT (a->arch == bfd_arch_powerpc); switch (b->arch) @@ -39,9 +35,13 @@ powerpc_compatible (a,b) default: return NULL; case bfd_arch_powerpc: + if (a->mach == bfd_mach_ppc_vle && b->bits_per_word == 32) + return a; + if (b->mach == bfd_mach_ppc_vle && a->bits_per_word == 32) + return b; return bfd_default_compatible (a, b); case bfd_arch_rs6000: - if (a->mach == 0) + if (b->mach == bfd_mach_rs6k) return a; return NULL; } @@ -61,9 +61,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:common64", 3, - true, /* default for 64 bit target */ + TRUE, /* default for 64 bit target */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[1] }, /* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch @@ -77,9 +78,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:common", 3, - false, + FALSE, powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[2], }, #else @@ -93,9 +95,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:common", 3, - true, /* default for 32 bit target */ + TRUE, /* default for 32 bit target */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[1], }, /* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch @@ -109,9 +112,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:common64", 3, - false, + FALSE, powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[2] }, #endif @@ -124,9 +128,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:603", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[3] }, { @@ -138,9 +143,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:EC603e", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[4] }, { @@ -152,9 +158,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:604", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[5] }, { @@ -166,9 +173,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:403", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[6] }, { @@ -180,9 +188,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:601", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[7] }, { @@ -194,9 +203,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:620", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[8] }, { @@ -208,9 +218,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:630", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[9] }, { @@ -222,9 +233,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:a35", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[10] }, { @@ -236,9 +248,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:rs64ii", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[11] }, { @@ -250,9 +263,10 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:rs64iii", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[12] }, { @@ -264,23 +278,145 @@ const bfd_arch_info_type bfd_powerpc_archs[] = "powerpc", "powerpc:7400", 3, - false, /* not the default */ + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &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_e500, + "powerpc", + "powerpc:e500", + 3, + FALSE, + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &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_e500mc, + "powerpc", + "powerpc:e500mc", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[15] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e500mc64, + "powerpc", + "powerpc:e500mc64", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[16] + }, + { + 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, - false, /* not the default */ + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[17] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_750, + "powerpc", + "powerpc:750", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[18] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_titan, + "powerpc", + "powerpc:titan", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[19] + }, + { + 16, /* 16 or 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_vle, + "powerpc", + "powerpc:vle", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[20] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e5500, + "powerpc", + "powerpc:e5500", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[21] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e6500, + "powerpc", + "powerpc:e6500", + 3, + FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, 0 } };