2012-09-10 Steve Ellcey <sellcey@mips.com>
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Sep 2012 17:28:20 +0000 (17:28 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Sep 2012 17:28:20 +0000 (17:28 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191155 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config.gcc
gcc/config/mips/gnu-user64.h
gcc/config/mips/mips.h
gcc/config/mips/mti-linux.h [new file with mode: 0644]
gcc/config/mips/t-mti-linux [new file with mode: 0644]

index c550f8b..3abb393 100644 (file)
@@ -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.
index 6d9c68d..ba366b3 100644 (file)
@@ -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
index ad59ba4..7c2187f 100644 (file)
@@ -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} \
index 9ce466d..e04f099 100644 (file)
@@ -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 (file)
index 0000000..36c003c
--- /dev/null
@@ -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 (file)
index 0000000..ba11706
--- /dev/null
@@ -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