* config/tc-xtensa.h (resource_table): Change units to unsigned chars.
[deliverable/binutils-gdb.git] / bfd / cpu-powerpc.c
index f824fff7b6ed09c77fadd3da6d963317d26b33ca..2c47d6323ffa661b9bdb84a8725ac8a28311936b 100644 (file)
@@ -1,5 +1,6 @@
 /* BFD PowerPC CPU definition
 /* 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.
    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
 
 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"
 
 #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:
     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*/
 }
 
        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 */
   {
     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,
     "powerpc",
     "powerpc:603",
     3,
-    false, /* not the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     bfd_default_scan,
-    &arch_info_struct[1]
+    &bfd_powerpc_archs[3]
   },
   {
     32,        /* 32 bits in a word */
   },
   {
     32,        /* 32 bits in a word */
@@ -72,10 +138,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:EC603e",
     3,
     "powerpc",
     "powerpc:EC603e",
     3,
-    false, /* not the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     bfd_default_scan,
-    &arch_info_struct[2]
+    &bfd_powerpc_archs[4]
   },
   {
     32,        /* 32 bits in a word */
   },
   {
     32,        /* 32 bits in a word */
@@ -86,10 +152,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:604",
     3,
     "powerpc",
     "powerpc:604",
     3,
-    false, /* not the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     bfd_default_scan,
-    &arch_info_struct[3]
+    &bfd_powerpc_archs[5]
   },
   {
     32,        /* 32 bits in a word */
   },
   {
     32,        /* 32 bits in a word */
@@ -100,10 +166,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:403",
     3,
     "powerpc",
     "powerpc:403",
     3,
-    false, /* not the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     bfd_default_scan,
-    &arch_info_struct[4]
+    &bfd_powerpc_archs[6]
   },
   {
     32,        /* 32 bits in a word */
   },
   {
     32,        /* 32 bits in a word */
@@ -114,12 +180,12 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:601",
     3,
     "powerpc",
     "powerpc:601",
     3,
-    false, /* not the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     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 */
     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,
     "powerpc",
     "powerpc:620",
     3,
-    false, /* not the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     bfd_default_scan,
-    &arch_info_struct[6]
+    &bfd_powerpc_archs[8]
   },
   {
     64,        /* 64 bits in a word */
   },
   {
     64,        /* 64 bits in a word */
@@ -142,10 +208,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:630",
     3,
     "powerpc",
     "powerpc:630",
     3,
-    false, /* not the default */
+    FALSE, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
     powerpc_compatible,
     bfd_default_scan,
-    &arch_info_struct[7]
+    &bfd_powerpc_archs[9]
   },
   {
     64,        /* 64 bits in a word */
   },
   {
     64,        /* 64 bits in a word */
@@ -156,10 +222,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:a35",
     3,
     "powerpc",
     "powerpc:a35",
     3,
-    false, /* not the default */
+    FALSE, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
     powerpc_compatible,
     bfd_default_scan,
-    &arch_info_struct[8]
+    &bfd_powerpc_archs[10]
   },
   {
     64,        /* 64 bits in a word */
   },
   {
     64,        /* 64 bits in a word */
@@ -170,10 +236,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:rs64ii",
     3,
     "powerpc",
     "powerpc:rs64ii",
     3,
-    false, /* not the default */
+    FALSE, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
     powerpc_compatible,
     bfd_default_scan,
-    &arch_info_struct[9]
+    &bfd_powerpc_archs[11]
   },
   {
     64,        /* 64 bits in a word */
   },
   {
     64,        /* 64 bits in a word */
@@ -184,10 +250,10 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:rs64iii",
     3,
     "powerpc",
     "powerpc:rs64iii",
     3,
-    false, /* not the default */
+    FALSE, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
     powerpc_compatible,
     bfd_default_scan,
-    &arch_info_struct[10]
+    &bfd_powerpc_archs[12]
   },
   {
     32,        /* 32 bits in a word */
   },
   {
     32,        /* 32 bits in a word */
@@ -198,25 +264,37 @@ static const bfd_arch_info_type arch_info_struct[] =
     "powerpc",
     "powerpc:7400",
     3,
     "powerpc",
     "powerpc:7400",
     3,
-    false, /* not the default */
+    FALSE, /* not the default */
     powerpc_compatible,
     bfd_default_scan,
     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_arch_powerpc,
-    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
+    bfd_mach_ppc_e500,
     "powerpc",
     "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,
     3,
-    true, /* the default */
-    powerpc_compatible, 
+    FALSE, /* not the default */
+    powerpc_compatible,
     bfd_default_scan,
     bfd_default_scan,
-    &arch_info_struct[0]
-  };
+    0
+  }
+};
This page took 0.027749 seconds and 4 git commands to generate.