* config.host: Add driver-sparc.o and sparc/x-sparc on
authordavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Sep 2011 15:58:57 +0000 (15:58 +0000)
committerdavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 5 Sep 2011 15:58:57 +0000 (15:58 +0000)
native sparc*-*-linux* builds.
* config/sparc/driver-sparc.c: Correct Linux strings.
* config/sparc/linux.h: Add DRIVER_SELF_SPECS.
* config/sparc/linux64.h: Likewise.
* doc/invoke.texi: Document that Linux also supports
-mcpu=native and -mtune=native on sparc.

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

gcc/ChangeLog
gcc/config.host
gcc/config/sparc/driver-sparc.c
gcc/config/sparc/linux.h
gcc/config/sparc/linux64.h
gcc/doc/invoke.texi

index 1534d47..e605ce2 100644 (file)
@@ -1,3 +1,13 @@
+2011-09-05  David S. Miller  <davem@davemloft.net>
+
+       * config.host: Add driver-sparc.o and sparc/x-sparc on
+       native sparc*-*-linux* builds.
+       * config/sparc/driver-sparc.c: Correct Linux strings.
+       * config/sparc/linux.h: Add DRIVER_SELF_SPECS.
+       * config/sparc/linux64.h: Likewise.
+       * doc/invoke.texi: Document that Linux also supports
+       -mcpu=native and -mtune=native on sparc.
+
 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/50289
@@ -14,7 +24,7 @@
        calculations.
 
 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
-       
+
        * config/avr/avr.h (progmem_section): Remove Declaration.
        * config/avr/avr.c (progmem_section): Make static and rename to
        progmem_swtable_section.
index 61a00b5..df8ba8f 100644 (file)
@@ -165,6 +165,14 @@ case ${host} in
        ;;
     esac
     ;;
+  sparc*-*-linux*)
+    case ${target} in
+      sparc*-*-linux*)
+       host_extra_gcc_objs="driver-sparc.o"
+       host_xmake_file="${host_xmake_file} sparc/x-sparc"
+       ;;
+    esac
+    ;;
 esac
 
 # Machine-specific settings.
index e5b91bc..f6a4e7c 100644 (file)
@@ -58,7 +58,21 @@ static const struct cpu_names {
   { "SPARC-T3",                "niagara2" },
   { "SPARC-T4",                "niagara2" },
 #else
-  /* FIXME: Provide Linux/SPARC values.  */
+  { "SuperSPARC",      "supersparc" },
+  { "HyperSparc",      "hypersparc" },
+  { "SpitFire",                "ultrasparc" },
+  { "BlackBird",       "ultrasparc" },
+  { "Sabre",           "ultrasparc" },
+  { "Hummingbird",     "ultrasparc" },
+  { "Cheetah",         "ultrasparc3" },
+  { "Jalapeno",                "ultrasparc3" },
+  { "Jaguar",          "ultrasparc3" },
+  { "Panther",         "ultrasparc3" },
+  { "Serrano",         "ultrasparc3" },
+  { "UltraSparc T1",   "niagara" },
+  { "UltraSparc T2",   "niagara2" },
+  { "UltraSparc T3",   "niagara2" },
+  { "UltraSparc T4",   "niagara2" },
 #endif
   { NULL,      NULL }
   };
@@ -137,7 +151,7 @@ host_detect_local_cpu (int argc, const char **argv)
     return NULL;
 
   while (fgets (buf, sizeof (buf), f) != NULL)
-    if (strncmp (buf, "cpu model", sizeof ("cpu model") - 1) == 0)
+    if (strncmp (buf, "cpu\t\t:", sizeof ("cpu\t\t:") - 1) == 0)
       {
         for (i = 0; cpu_names [i].name; i++)
           if (strstr (buf, cpu_names [i].name) != NULL)
index a9b630e..0ad4b34 100644 (file)
@@ -39,6 +39,22 @@ along with GCC; see the file COPYING3.  If not see
   "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
    %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
 
+/* -mcpu=native handling only makes sense with compiler running on
+   a SPARC chip.  */
+#if defined(__sparc__)
+extern const char *host_detect_local_cpu (int argc, const char **argv);
+# define EXTRA_SPEC_FUNCTIONS                                          \
+  { "local_cpu_detect", host_detect_local_cpu },
+
+# define MCPU_MTUNE_NATIVE_SPECS                                       \
+   " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"             \
+   " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
+#else
+# define MCPU_MTUNE_NATIVE_SPECS ""
+#endif
+
+#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
+
 /* This is for -profile to use -lc_p instead of -lc.  */
 #undef CC1_SPEC
 #define        CC1_SPEC "%{profile:-p} \
index 7f8b378..0ad1a52 100644 (file)
@@ -142,6 +142,22 @@ along with GCC; see the file COPYING3.  If not see
 %{!mno-relax:%{!r:-relax}} \
 "
 
+/* -mcpu=native handling only makes sense with compiler running on
+   a SPARC chip.  */
+#if defined(__sparc__)
+extern const char *host_detect_local_cpu (int argc, const char **argv);
+# define EXTRA_SPEC_FUNCTIONS                                          \
+  { "local_cpu_detect", host_detect_local_cpu },
+
+# define MCPU_MTUNE_NATIVE_SPECS                                       \
+   " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"             \
+   " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
+#else
+# define MCPU_MTUNE_NATIVE_SPECS ""
+#endif
+
+#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
+
 #undef CC1_SPEC
 #if DEFAULT_ARCH32_P
 #define CC1_SPEC "%{profile:-p} \
index d5474fe..66d9fc5 100644 (file)
@@ -17285,7 +17285,7 @@ for machine type @var{cpu_type}.  Supported values for @var{cpu_type} are
 @samp{sparclet}, @samp{tsc701}, @samp{v9}, @samp{ultrasparc},
 @samp{ultrasparc3}, @samp{niagara} and @samp{niagara2}.
 
-Native Solaris toolchains also support the value @samp{native},
+Native Solaris and Linux toolchains also support the value @samp{native},
 which selects the best architecture option for the host processor.
 @option{-mcpu=native} has no effect if GCC does not recognize
 the processor.
@@ -17354,8 +17354,8 @@ The same values for @option{-mcpu=@var{cpu_type}} can be used for
 that select a particular CPU implementation.  Those are @samp{cypress},
 @samp{supersparc}, @samp{hypersparc}, @samp{leon}, @samp{f930}, @samp{f934},
 @samp{sparclite86x}, @samp{tsc701}, @samp{ultrasparc}, @samp{ultrasparc3},
-@samp{niagara}, and @samp{niagara2}.  With native Solaris toolchains,
-@samp{native} can also be used.
+@samp{niagara}, and @samp{niagara2}.  With native Solaris and Linux
+toolchains, @samp{native} can also be used.
 
 @item -mv8plus
 @itemx -mno-v8plus