190075Sobrien/* Core target definitions for GNU compiler
290075Sobrien   for IBM RS/6000 PowerPC targeted to embedded ELF systems.
3169689Skan   Copyright (C) 1995, 1996, 2000, 2003, 2004 Free Software Foundation, Inc.
490075Sobrien   Contributed by Cygnus Support.
590075Sobrien
6132718Skan   This file is part of GCC.
790075Sobrien
8132718Skan   GCC is free software; you can redistribute it and/or modify it
9132718Skan   under the terms of the GNU General Public License as published
10132718Skan   by the Free Software Foundation; either version 2, or (at your
11132718Skan   option) any later version.
1290075Sobrien
13132718Skan   GCC is distributed in the hope that it will be useful, but WITHOUT
14132718Skan   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15132718Skan   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16132718Skan   License for more details.
1790075Sobrien
18132718Skan   You should have received a copy of the GNU General Public License
19132718Skan   along with GCC; see the file COPYING.  If not, write to the
20169689Skan   Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
21169689Skan   MA 02110-1301, USA.  */
2290075Sobrien
23132718Skan/* Add -meabi to target flags.  */
2490075Sobrien#undef TARGET_DEFAULT
2590075Sobrien#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
2690075Sobrien
27132718Skan/* Invoke an initializer function to set up the GOT.  */
2890075Sobrien#define NAME__MAIN "__eabi"
2990075Sobrien#define INVOKE__main
3090075Sobrien
3190075Sobrien#undef TARGET_VERSION
3290075Sobrien#define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
3390075Sobrien
34117395Skan#undef TARGET_OS_CPP_BUILTINS
35117395Skan#define TARGET_OS_CPP_BUILTINS()          \
36117395Skan  do                                      \
37117395Skan    {                                     \
38117395Skan      builtin_define_std ("PPC");         \
39117395Skan      builtin_define ("__embedded__");    \
40117395Skan      builtin_assert ("system=embedded"); \
41117395Skan      builtin_assert ("cpu=powerpc");     \
42117395Skan      builtin_assert ("machine=powerpc"); \
43132718Skan      TARGET_OS_SYSV_CPP_BUILTINS ();     \
44117395Skan    }                                     \
45117395Skan  while (0)
46117395Skan
47117395Skan#undef TARGET_SPE_ABI
48117395Skan#undef TARGET_SPE
49132718Skan#undef TARGET_E500
50117395Skan#undef TARGET_ISEL
51117395Skan#undef TARGET_FPRS
52169689Skan#undef TARGET_E500_SINGLE
53169689Skan#undef TARGET_E500_DOUBLE
54117395Skan
55117395Skan#define TARGET_SPE_ABI rs6000_spe_abi
56132718Skan#define TARGET_SPE rs6000_spe
57132718Skan#define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540)
58117395Skan#define TARGET_ISEL rs6000_isel
59169689Skan#define TARGET_FPRS (rs6000_float_gprs == 0)
60169689Skan#define TARGET_E500_SINGLE (TARGET_HARD_FLOAT && rs6000_float_gprs == 1)
61169689Skan#define TARGET_E500_DOUBLE (TARGET_HARD_FLOAT && rs6000_float_gprs == 2)
62