linuxspe.h revision 132718
1132718Skan/* Definitions of target machine for GNU compiler, 2132718Skan for PowerPC e500 machines running GNU/Linux. 3132718Skan Copyright (C) 2003 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 20132718Skan Free Software Foundation, 59 Temple Place - Suite 330, Boston, 21132718Skan MA 02111-1307, 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 28132718Skan#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) 29132718Skan 30132718Skan#undef TARGET_SPE_ABI 31132718Skan#undef TARGET_SPE 32132718Skan#undef TARGET_E500 33132718Skan#undef TARGET_ISEL 34132718Skan#undef TARGET_FPRS 35132718Skan 36132718Skan#define TARGET_SPE_ABI rs6000_spe_abi 37132718Skan#define TARGET_SPE rs6000_spe 38132718Skan#define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540) 39132718Skan#define TARGET_ISEL rs6000_isel 40132718Skan#define TARGET_FPRS (!rs6000_float_gprs) 41132718Skan 42132718Skan#undef SUBSUBTARGET_OVERRIDE_OPTIONS 43132718Skan#define SUBSUBTARGET_OVERRIDE_OPTIONS \ 44132718Skan if (rs6000_select[1].string == NULL) \ 45132718Skan rs6000_cpu = PROCESSOR_PPC8540; \ 46132718Skan if (rs6000_abi_string == NULL || strstr (rs6000_abi_string, "spe") == NULL) \ 47132718Skan rs6000_spe_abi = 1; \ 48132718Skan if (rs6000_float_gprs_string == NULL) \ 49132718Skan rs6000_float_gprs = 1; \ 50132718Skan /* See note below. */ \ 51132718Skan /*if (rs6000_long_double_size_string == NULL)*/ \ 52132718Skan /* rs6000_long_double_type_size = 128;*/ \ 53132718Skan if (rs6000_spe_string == NULL) \ 54132718Skan rs6000_spe = 1; \ 55132718Skan if (rs6000_isel_string == NULL) \ 56132718Skan rs6000_isel = 1 57132718Skan 58132718Skan/* The e500 ABI says that either long doubles are 128 bits, or if 59132718Skan implemented in any other size, the compiler/linker should error out. 60132718Skan We have no emulation libraries for 128 bit long doubles, and I hate 61132718Skan the dozens of failures on the regression suite. So I'm breaking ABI 62132718Skan specifications, until I properly fix the emulation. 63132718Skan 64132718Skan Enable these later. 65132718Skan#undef CPP_LONGDOUBLE_DEFAULT_SPEC 66132718Skan#define CPP_LONGDOUBLE_DEFAULT_SPEC "-D__LONG_DOUBLE_128__=1" 67132718Skan*/ 68132718Skan 69132718Skan#undef ASM_DEFAULT_SPEC 70132718Skan#define ASM_DEFAULT_SPEC "-mppc -mspe -me500" 71