/* BFD PowerPC CPU definition
   Copyright (C) 1994-2016 Free Software Foundation, Inc.
   Contributed by Ian Lance Taylor, Cygnus Support.

   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 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.

   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 "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 (const bfd_arch_info_type *a,
		    const bfd_arch_info_type *b)
{
  BFD_ASSERT (a->arch == bfd_arch_powerpc);
  switch (b->arch)
    {
    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 (b->mach == bfd_mach_rs6k)
	return a;
      return NULL;
    }
  /*NOTREACHED*/
}

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_arch_default_fill,
    &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_arch_default_fill,
    &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_arch_default_fill,
    &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_arch_default_fill,
    &bfd_powerpc_archs[2]
  },
#endif
  {
    32,	/* 32 bits in a word */
    32,	/* 32 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_603,
    "powerpc",
    "powerpc:603",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[3]
  },
  {
    32,	/* 32 bits in a word */
    32,	/* 32 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_ec603e,
    "powerpc",
    "powerpc:EC603e",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[4]
  },
  {
    32,	/* 32 bits in a word */
    32,	/* 32 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_604,
    "powerpc",
    "powerpc:604",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[5]
  },
  {
    32,	/* 32 bits in a word */
    32,	/* 32 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_403,
    "powerpc",
    "powerpc:403",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[6]
  },
  {
    32,	/* 32 bits in a word */
    32,	/* 32 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_601,
    "powerpc",
    "powerpc:601",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[7]
  },
  {
    64,	/* 64 bits in a word */
    64,	/* 64 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_620,
    "powerpc",
    "powerpc:620",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[8]
  },
  {
    64,	/* 64 bits in a word */
    64,	/* 64 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_630,
    "powerpc",
    "powerpc:630",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[9]
  },
  {
    64,	/* 64 bits in a word */
    64,	/* 64 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_a35,
    "powerpc",
    "powerpc:a35",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[10]
  },
  {
    64,	/* 64 bits in a word */
    64,	/* 64 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_rs64ii,
    "powerpc",
    "powerpc:rs64ii",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[11]
  },
  {
    64,	/* 64 bits in a word */
    64,	/* 64 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_rs64iii,
    "powerpc",
    "powerpc:rs64iii",
    3,
    FALSE, /* not the default */
    powerpc_compatible,
    bfd_default_scan,
    bfd_arch_default_fill,
    &bfd_powerpc_archs[12]
  },
  {
    32,	/* 32 bits in a word */
    32,	/* 32 bits in an address */
    8,	/* 8 bits in a byte */
    bfd_arch_powerpc,
    bfd_mach_ppc_7400,
    "powerpc",
    "powerpc:7400",
    3,
    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 */
    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 */
    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
  }
};
