This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

patch: ppc-e500 linux target


This adds preliminary support for an E500 linux target.

Mostly untested, except building cc1. Definitely not bootstrappable yet.

Committed to mainline.

[Zack, would you like me to commit this to the E500 branch?]

2003-05-06 Aldy Hernandez <aldyh@redhat.com>

* config/rs6000/linuxspe.h: New file.

* config.gcc: Add powerpc-*-linux-gnuspe* target.

Index: config/rs6000/linuxspe.h
===================================================================
RCS file: config/rs6000/linuxspe.h
diff -N config/rs6000/linuxspe.h
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- config/rs6000/linuxspe.h 6 May 2003 19:10:12 -0000
***************
*** 0 ****
--- 1,58 ----
+ /* Definitions of target machine for GNU compiler,
+ for PowerPC e500 machines running GNU/Linux.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ Contributed by Aldy Hernandez (aldy@quesejoda.com).
+
+ This file is part of GCC.
+
+ GCC 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 2, or (at your
+ option) any later version.
+
+ GCC 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 GCC; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fprintf (stderr, " (PowerPC E500 GNU/Linux)");
+
+ /* Override rs6000.h and sysv4.h definition. */
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
+
+ #undef SUBSUBTARGET_OVERRIDE_OPTIONS
+ #define SUBSUBTARGET_OVERRIDE_OPTIONS \
+ if (rs6000_select[1].string == NULL) \
+ rs6000_cpu = PROCESSOR_PPC8540; \
+ if (rs6000_abi_string == NULL || strstr (rs6000_abi_string, "spe") == NULL) \
+ rs6000_spe_abi = 1; \
+ if (rs6000_float_gprs_string == NULL) \
+ rs6000_float_gprs = 1; \
+ /* See note below. */ \
+ /*if (rs6000_long_double_size_string == NULL)*/ \
+ /* rs6000_long_double_type_size = 128;*/ \
+ if (rs6000_spe_string == NULL) \
+ rs6000_spe = 1; \
+ if (rs6000_isel_string == NULL) \
+ rs6000_isel = 1
+
+ /* The e500 ABI says that either long doubles are 128 bits, or if
+ implemented in any other size, the compiler/linker should error out.
+ We have no emulation libraries for 128 bit long doubles, and I hate
+ the dozens of failures on the regression suite. So I'm breaking ABI
+ specifications, until I properly fix the emulation.
+
+ Enable these later.
+ #undef CPP_LONGDOUBLE_DEFAULT_SPEC
+ #define CPP_LONGDOUBLE_DEFAULT_SPEC "-D__LONG_DOUBLE_128__=1"
+ */
+
+ #undef ASM_DEFAULT_SPEC
+ #define ASM_DEFAULT_SPEC "-mppc -mspe -me500"
Index: config.gcc
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config.gcc,v
retrieving revision 1.296
diff -c -p -r1.296 config.gcc
*** config.gcc 1 May 2003 06:18:07 -0000 1.296
--- config.gcc 6 May 2003 19:10:12 -0000
*************** powerpc-*-linux-gnualtivec*)
*** 2049,2054 ****
--- 2049,2058 ----
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
;;
+ powerpc-*-linux-gnuspe*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h"
+ tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
+ ;;
powerpc-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]