aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Ellcey <sellcey@mips.com>2012-09-10 17:28:20 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2012-09-10 17:28:20 +0000
commit965c17988d6d4d0e8e943e087698bff6f9318a4a (patch)
treea29c811a4735ed2125bf8c920df9f87aeb70d2ec
parent320e29d7e525e243d48c89679ba11c115e3e577c (diff)
downloadgcc-965c17988d6d4d0e8e943e087698bff6f9318a4a.zip
gcc-965c17988d6d4d0e8e943e087698bff6f9318a4a.tar.gz
gcc-965c17988d6d4d0e8e943e087698bff6f9318a4a.tar.bz2
config.gcc: Add mips*-mti-linux* target Handle with_synci like other options.
2012-09-10 Steve Ellcey <sellcey@mips.com> * config.gcc: Add mips*-mti-linux* target Handle with_synci like other options. * config/mips/gnu-user64.h (LINUX64_DRIVER_SELF_SPECS): New. (DRIVER_SELF_SPECS): Define in terms of LINUX64_DRIVER_SELF_SPECS. * config/mips/mips.h (MIPS_ISA_SYNCI_SPEC): New. * config/mips/mti-linux.h: New file. * config/mips/t-mti-linux: New file. From-SVN: r191155
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config.gcc13
-rw-r--r--gcc/config/mips/gnu-user64.h10
-rw-r--r--gcc/config/mips/mips.h6
-rw-r--r--gcc/config/mips/mti-linux.h43
-rw-r--r--gcc/config/mips/t-mti-linux24
6 files changed, 100 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c550f8b..3abb393 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2012-09-10 Steve Ellcey <sellcey@mips.com>
+
+ * config.gcc: Add mips*-mti-linux* target
+ Handle with_synci like other options.
+ * config/mips/gnu-user64.h (LINUX64_DRIVER_SELF_SPECS): New.
+ (DRIVER_SELF_SPECS): Define in terms of LINUX64_DRIVER_SELF_SPECS.
+ * config/mips/mips.h (MIPS_ISA_SYNCI_SPEC): New.
+ * config/mips/mti-linux.h: New file.
+ * config/mips/t-mti-linux: New file.
+
2012-09-10 Marc Glisse <marc.glisse@inria.fr>
* tree-ssa-forwprop.c (simplify_permutation): Handle CONSTRUCTOR.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6d9c68d..ba366b3 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1696,6 +1696,14 @@ mips*-*-netbsd*) # NetBSD/mips, either endian.
tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h"
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
;;
+mips*-mti-linux*)
+ tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h mips/mti-linux.h"
+ tmake_file="${tmake_file} mips/t-mti-linux"
+ tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
+ gnu_ld=yes
+ gas=yes
+ test x$with_llsc != x || with_llsc=yes
+ ;;
mips64*-*-linux* | mipsisa64*-*-linux*)
tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h"
tmake_file="${tmake_file} mips/t-linux64"
@@ -3273,10 +3281,11 @@ case "${target}" in
yes)
with_synci=synci
;;
- "" | no)
- # No is the default.
+ no)
with_synci=no-synci
;;
+ "")
+ ;;
*)
echo "Unknown synci type used in --with-synci" 1>&2
exit 1
diff --git a/gcc/config/mips/gnu-user64.h b/gcc/config/mips/gnu-user64.h
index ad59ba4..7c2187f 100644
--- a/gcc/config/mips/gnu-user64.h
+++ b/gcc/config/mips/gnu-user64.h
@@ -20,13 +20,17 @@ along with GCC; see the file COPYING3. If not see
/* Force the default endianness and ABI flags onto the command line
in order to make the other specs easier to write. */
-#undef DRIVER_SELF_SPECS
-#define DRIVER_SELF_SPECS \
- BASE_DRIVER_SELF_SPECS, \
+
+#define LINUX64_DRIVER_SELF_SPECS \
LINUX_DRIVER_SELF_SPECS \
" %{!EB:%{!EL:%(endian_spec)}}" \
" %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}"
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS \
+ BASE_DRIVER_SELF_SPECS, \
+ LINUX64_DRIVER_SELF_SPECS
+
#undef GNU_USER_TARGET_LINK_SPEC
#define GNU_USER_TARGET_LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 9ce466d..e04f099 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -728,6 +728,11 @@ struct mips_cpu_info {
#define MIPS_32BIT_OPTION_SPEC \
"mips1|mips2|mips32*|mgp32"
+/* Infer a -msynci setting from a -mips argument, on the assumption that
+ -msynci is desired where possible. */
+#define MIPS_ISA_SYNCI_SPEC \
+ "%{msynci|mno-synci:;:%{mips32r2|mips64r2:-msynci;:-mno-synci}}"
+
#if MIPS_ABI_DEFAULT == ABI_O64 \
|| MIPS_ABI_DEFAULT == ABI_N32 \
|| MIPS_ABI_DEFAULT == ABI_64
@@ -762,7 +767,6 @@ struct mips_cpu_info {
{"mips-plt", "%{!mplt:%{!mno-plt:-m%(VALUE)}}" }, \
{"synci", "%{!msynci:%{!mno-synci:-m%(VALUE)}}" }
-
/* A spec that infers the -mdsp setting from an -march argument. */
#define BASE_DRIVER_SELF_SPECS \
"%{!mno-dsp: \
diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h
new file mode 100644
index 0000000..36c003c
--- /dev/null
+++ b/gcc/config/mips/mti-linux.h
@@ -0,0 +1,43 @@
+/* Target macros for mips*-mti-linux* targets.
+ Copyright (C) 2012
+ Free Software Foundation, Inc.
+
+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 3, 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 COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+/* This target is a multilib target, specify the sysroot paths. */
+#undef SYSROOT_SUFFIX_SPEC
+#define SYSROOT_SUFFIX_SPEC \
+ "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{msoft-float:/sof}%{mel|EL:/el}%{mabi=64:/64}%{mabi=n32:/n32}"
+
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS \
+ /* Make sure a -mips option is present. This helps us to pick \
+ the right multilib, and also makes the later specs easier \
+ to write. */ \
+ MIPS_ISA_LEVEL_SPEC, \
+ \
+ /* Infer the default float setting from -march. */ \
+ MIPS_ARCH_FLOAT_SPEC, \
+ \
+ /* Infer the -msynci setting from -march if not explicitly set. */ \
+ MIPS_ISA_SYNCI_SPEC, \
+ \
+ /* Base SPECs. */ \
+ BASE_DRIVER_SELF_SPECS \
+ \
+ /* Use the standard linux specs for everything else. */ \
+ LINUX64_DRIVER_SELF_SPECS
diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux
new file mode 100644
index 0000000..ba11706
--- /dev/null
+++ b/gcc/config/mips/t-mti-linux
@@ -0,0 +1,24 @@
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# 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 3, 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 COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# The default build is mips32r2, hard-float big-endian. Add mips32,
+# soft-float, and little-endian variations.
+
+MULTILIB_OPTIONS = mips32/mips64/mips64r2 msoft-float EL
+MULTILIB_DIRNAMES = mips32 mips64 mips64r2 sof el
+MULTILIB_MATCHES = EL=mel EB=meb