1132718Skan/* Definitions of target machine for GNU compiler, 2132718Skan for PowerPC e500 machines running GNU/Linux. 3169689Skan Copyright (C) 2003, 2004 Free Software Foundation, Inc. 4132718Skan Contributed by Aldy Hernandez (aldy@quesejoda.com). 5132718Skan 6132718Skan This file is part of GCC. 7132718Skan 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. 12132718Skan 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. 17132718Skan 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. */ 22132718Skan 23132718Skan#undef TARGET_VERSION 24132718Skan#define TARGET_VERSION fprintf (stderr, " (PowerPC E500 GNU/Linux)"); 25132718Skan 26132718Skan/* Override rs6000.h and sysv4.h definition. */ 27132718Skan#undef TARGET_DEFAULT 28169689Skan#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_STRICT_ALIGN) 29132718Skan 30132718Skan#undef TARGET_SPE_ABI 31132718Skan#undef TARGET_SPE 32132718Skan#undef TARGET_E500 33132718Skan#undef TARGET_ISEL 34132718Skan#undef TARGET_FPRS 35169689Skan#undef TARGET_E500_SINGLE 36169689Skan#undef TARGET_E500_DOUBLE 37132718Skan 38132718Skan#define TARGET_SPE_ABI rs6000_spe_abi 39132718Skan#define TARGET_SPE rs6000_spe 40132718Skan#define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540) 41132718Skan#define TARGET_ISEL rs6000_isel 42169689Skan#define TARGET_FPRS (rs6000_float_gprs == 0) 43169689Skan#define TARGET_E500_SINGLE (TARGET_HARD_FLOAT && rs6000_float_gprs == 1) 44169689Skan#define TARGET_E500_DOUBLE (TARGET_HARD_FLOAT && rs6000_float_gprs == 2) 45132718Skan 46132718Skan#undef SUBSUBTARGET_OVERRIDE_OPTIONS 47132718Skan#define SUBSUBTARGET_OVERRIDE_OPTIONS \ 48132718Skan if (rs6000_select[1].string == NULL) \ 49132718Skan rs6000_cpu = PROCESSOR_PPC8540; \ 50169689Skan if (!rs6000_explicit_options.abi) \ 51132718Skan rs6000_spe_abi = 1; \ 52169689Skan if (!rs6000_explicit_options.float_gprs) \ 53132718Skan rs6000_float_gprs = 1; \ 54132718Skan /* See note below. */ \ 55169689Skan /*if (!rs6000_explicit_options.long_double)*/ \ 56132718Skan /* rs6000_long_double_type_size = 128;*/ \ 57169689Skan if (!rs6000_explicit_options.spe) \ 58132718Skan rs6000_spe = 1; \ 59169689Skan if (!rs6000_explicit_options.isel) \ 60169689Skan rs6000_isel = 1; \ 61169689Skan if (target_flags & MASK_64BIT) \ 62169689Skan error ("-m64 not supported in this configuration") 63132718Skan 64132718Skan/* The e500 ABI says that either long doubles are 128 bits, or if 65132718Skan implemented in any other size, the compiler/linker should error out. 66132718Skan We have no emulation libraries for 128 bit long doubles, and I hate 67132718Skan the dozens of failures on the regression suite. So I'm breaking ABI 68132718Skan specifications, until I properly fix the emulation. 69132718Skan 70132718Skan Enable these later. 71132718Skan#undef CPP_LONGDOUBLE_DEFAULT_SPEC 72132718Skan#define CPP_LONGDOUBLE_DEFAULT_SPEC "-D__LONG_DOUBLE_128__=1" 73132718Skan*/ 74132718Skan 75132718Skan#undef ASM_DEFAULT_SPEC 76132718Skan#define ASM_DEFAULT_SPEC "-mppc -mspe -me500" 77