[rtems-tools commit] Add SPARC patches for GCC 4.9.2

Sebastian Huber sebh at rtems.org
Thu Dec 4 12:03:25 UTC 2014


Module:    rtems-tools
Branch:    master
Commit:    d8a82fdf2e92e69c6d262e084337a76c81524f6f
Changeset: http://git.rtems.org/rtems-tools/commit/?id=d8a82fdf2e92e69c6d262e084337a76c81524f6f

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Dec  4 13:02:27 2014 +0100

Add SPARC patches for GCC 4.9.2

These patches are already present in the GCC 4.9 branch and will be
available with GCC 4.9.3.

---

 tools/4.11/gcc/sparc/gcc-4.9.2-leon3v7.diff        | 288 +++++++++++++++++++++
 .../4.11/gcc/sparc/gcc-4.9.2-rtems-multilibs.diff  |  54 ++++
 2 files changed, 342 insertions(+)

diff --git a/tools/4.11/gcc/sparc/gcc-4.9.2-leon3v7.diff b/tools/4.11/gcc/sparc/gcc-4.9.2-leon3v7.diff
new file mode 100644
index 0000000..ef72c77
--- /dev/null
+++ b/tools/4.11/gcc/sparc/gcc-4.9.2-leon3v7.diff
@@ -0,0 +1,288 @@
+From cd763e49bec71fd5ecda42c3fcd7a27fbcbddc5e Mon Sep 17 00:00:00 2001
+From: danielh <danielh at 138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Thu, 6 Nov 2014 10:58:33 +0000
+Subject: [PATCH] 	Backport from mainline 	2014-11-06  Daniel Hellstrom 
+ <daniel at gaisler.com>
+
+	* config.gcc (sparc*-*-*): Accept mcpu=leon3v7 processor.
+	* doc/invoke.texi (SPARC options): Add mcpu=leon3v7 comment.
+	* config/sparc/leon.md (leon3_load, leon_store, leon_fp_*): Handle
+	leon3v7 as leon3.
+	* config/sparc/sparc-opts.h (enum processor_type): Add LEON3V7.
+	* config/sparc/sparc.c (sparc_option_override): Add leon3v7 support.
+	* config/sparc/sparc.h (TARGET_CPU_leon3v7): New define.
+	* config/sparc/sparc.md (cpu): Add leon3v7.
+	* config/sparc/sparc.opt (enum processor_type): Add leon3v7.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@217187 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ gcc/config.gcc                |  5 ++++-
+ gcc/config/sparc/leon.md      | 14 +++++++-------
+ gcc/config/sparc/sparc-opts.h |  1 +
+ gcc/config/sparc/sparc.c      |  3 +++
+ gcc/config/sparc/sparc.h      | 40 +++++++++++++++++++++++++---------------
+ gcc/config/sparc/sparc.md     |  1 +
+ gcc/config/sparc/sparc.opt    |  3 +++
+ gcc/doc/invoke.texi           | 16 ++++++++--------
+ 9 files changed, 64 insertions(+), 31 deletions(-)
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index 9d3fa57..b36da74 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -3205,6 +3205,9 @@ if test x$with_cpu = x ; then
+ 	*-leon[3-9]*)
+ 	  with_cpu=leon3
+ 	  ;;
++	*-leon[3-9]v7*)
++	  with_cpu=leon3v7
++	  ;;
+ 	*)
+ 	  with_cpu="`echo ${target} | sed 's/-.*$//'`"
+ 	  ;;
+@@ -3993,7 +3996,7 @@ case "${target}" in
+ 			case ${val} in
+ 			"" | sparc | sparcv9 | sparc64 \
+ 			| v7 | cypress \
+-			| v8 | supersparc | hypersparc | leon | leon3 \
++			| v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
+ 			| sparclite | f930 | f934 | sparclite86x \
+ 			| sparclet | tsc701 \
+ 			| v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
+diff --git a/gcc/config/sparc/leon.md b/gcc/config/sparc/leon.md
+index 82b6a0d..ad22e3b 100644
+--- a/gcc/config/sparc/leon.md
++++ b/gcc/config/sparc/leon.md
+@@ -29,11 +29,11 @@
+ 
+ ;; Use a double reservation to work around the load pipeline hazard on UT699.
+ (define_insn_reservation "leon3_load" 1
+-  (and (eq_attr "cpu" "leon3") (eq_attr "type" "load,sload"))
++  (and (eq_attr "cpu" "leon3,leon3v7") (eq_attr "type" "load,sload"))
+   "leon_memory*2")
+ 
+ (define_insn_reservation "leon_store" 2
+-  (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "store"))
++  (and (eq_attr "cpu" "leon,leon3,leon3v7") (eq_attr "type" "store"))
+   "leon_memory*2")
+ 
+ ;; This describes Gaisler Research's FPU
+@@ -44,21 +44,21 @@
+ (define_cpu_unit "grfpu_ds" "grfpu")
+ 
+ (define_insn_reservation "leon_fp_alu" 4
+-  (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fp,fpcmp,fpmul"))
++  (and (eq_attr "cpu" "leon,leon3,leon3v7") (eq_attr "type" "fp,fpcmp,fpmul"))
+   "grfpu_alu, nothing*3")
+ 
+ (define_insn_reservation "leon_fp_divs" 16
+-  (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpdivs"))
++  (and (eq_attr "cpu" "leon,leon3,leon3v7") (eq_attr "type" "fpdivs"))
+   "grfpu_ds*14, nothing*2")
+ 
+ (define_insn_reservation "leon_fp_divd" 17
+-  (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpdivd"))
++  (and (eq_attr "cpu" "leon,leon3,leon3v7") (eq_attr "type" "fpdivd"))
+   "grfpu_ds*15, nothing*2")
+ 
+ (define_insn_reservation "leon_fp_sqrts" 24
+-  (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpsqrts"))
++  (and (eq_attr "cpu" "leon,leon3,leon3v7") (eq_attr "type" "fpsqrts"))
+   "grfpu_ds*22, nothing*2")
+ 
+ (define_insn_reservation "leon_fp_sqrtd" 25
+-  (and (eq_attr "cpu" "leon,leon3") (eq_attr "type" "fpsqrtd"))
++  (and (eq_attr "cpu" "leon,leon3,leon3v7") (eq_attr "type" "fpsqrtd"))
+   "grfpu_ds*23, nothing*2")
+diff --git a/gcc/config/sparc/sparc-opts.h b/gcc/config/sparc/sparc-opts.h
+index 13b375a..26017ed 100644
+--- a/gcc/config/sparc/sparc-opts.h
++++ b/gcc/config/sparc/sparc-opts.h
+@@ -31,6 +31,7 @@ enum processor_type {
+   PROCESSOR_HYPERSPARC,
+   PROCESSOR_LEON,
+   PROCESSOR_LEON3,
++  PROCESSOR_LEON3V7,
+   PROCESSOR_SPARCLITE,
+   PROCESSOR_F930,
+   PROCESSOR_F934,
+diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
+index 5b00cca..b77e808 100644
+--- a/gcc/config/sparc/sparc.c
++++ b/gcc/config/sparc/sparc.c
+@@ -1246,6 +1246,7 @@ sparc_option_override (void)
+     { TARGET_CPU_hypersparc, PROCESSOR_HYPERSPARC },
+     { TARGET_CPU_leon, PROCESSOR_LEON },
+     { TARGET_CPU_leon3, PROCESSOR_LEON3 },
++    { TARGET_CPU_leon3v7, PROCESSOR_LEON3V7 },
+     { TARGET_CPU_sparclite, PROCESSOR_F930 },
+     { TARGET_CPU_sparclite86x, PROCESSOR_SPARCLITE86X },
+     { TARGET_CPU_sparclet, PROCESSOR_TSC701 },
+@@ -1274,6 +1275,7 @@ sparc_option_override (void)
+     { "hypersparc",	MASK_ISA, MASK_V8|MASK_FPU },
+     { "leon",		MASK_ISA, MASK_V8|MASK_LEON|MASK_FPU },
+     { "leon3",		MASK_ISA, MASK_V8|MASK_LEON3|MASK_FPU },
++    { "leon3v7",	MASK_ISA, MASK_LEON3|MASK_FPU },
+     { "sparclite",	MASK_ISA, MASK_SPARCLITE },
+     /* The Fujitsu MB86930 is the original sparclite chip, with no FPU.  */
+     { "f930",		MASK_ISA|MASK_FPU, MASK_SPARCLITE },
+@@ -1526,6 +1528,7 @@ sparc_option_override (void)
+       sparc_costs = &leon_costs;
+       break;
+     case PROCESSOR_LEON3:
++    case PROCESSOR_LEON3V7:
+       sparc_costs = &leon3_costs;
+       break;
+     case PROCESSOR_SPARCLET:
+diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
+index dd2b5ad..79dbba2 100644
+--- a/gcc/config/sparc/sparc.h
++++ b/gcc/config/sparc/sparc.h
+@@ -137,21 +137,22 @@ extern enum cmodel sparc_cmodel;
+ #define TARGET_CPU_hypersparc	3
+ #define TARGET_CPU_leon		4
+ #define TARGET_CPU_leon3	5
+-#define TARGET_CPU_sparclite	6
+-#define TARGET_CPU_f930		6       /* alias */
+-#define TARGET_CPU_f934		6       /* alias */
+-#define TARGET_CPU_sparclite86x	7
+-#define TARGET_CPU_sparclet	8
+-#define TARGET_CPU_tsc701	8       /* alias */
+-#define TARGET_CPU_v9		9	/* generic v9 implementation */
+-#define TARGET_CPU_sparcv9	9	/* alias */
+-#define TARGET_CPU_sparc64	9	/* alias */
+-#define TARGET_CPU_ultrasparc	10
+-#define TARGET_CPU_ultrasparc3	11
+-#define TARGET_CPU_niagara	12
+-#define TARGET_CPU_niagara2	13
+-#define TARGET_CPU_niagara3	14
+-#define TARGET_CPU_niagara4	15
++#define TARGET_CPU_leon3v7	6
++#define TARGET_CPU_sparclite	7
++#define TARGET_CPU_f930		7       /* alias */
++#define TARGET_CPU_f934		7       /* alias */
++#define TARGET_CPU_sparclite86x	8
++#define TARGET_CPU_sparclet	9
++#define TARGET_CPU_tsc701	9       /* alias */
++#define TARGET_CPU_v9		10	/* generic v9 implementation */
++#define TARGET_CPU_sparcv9	10	/* alias */
++#define TARGET_CPU_sparc64	10	/* alias */
++#define TARGET_CPU_ultrasparc	11
++#define TARGET_CPU_ultrasparc3	12
++#define TARGET_CPU_niagara	13
++#define TARGET_CPU_niagara2	14
++#define TARGET_CPU_niagara3	15
++#define TARGET_CPU_niagara4	16
+ 
+ #if TARGET_CPU_DEFAULT == TARGET_CPU_v9 \
+  || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc \
+@@ -239,6 +240,11 @@ extern enum cmodel sparc_cmodel;
+ #define ASM_CPU32_DEFAULT_SPEC AS_LEON_FLAG
+ #endif
+ 
++#if TARGET_CPU_DEFAULT == TARGET_CPU_leon3v7
++#define CPP_CPU32_DEFAULT_SPEC "-D__leon__"
++#define ASM_CPU32_DEFAULT_SPEC AS_LEONV7_FLAG
++#endif
++
+ #endif
+ 
+ #if !defined(CPP_CPU32_DEFAULT_SPEC) || !defined(CPP_CPU64_DEFAULT_SPEC)
+@@ -285,6 +291,7 @@ extern enum cmodel sparc_cmodel;
+ %{mcpu=hypersparc:-D__hypersparc__ -D__sparc_v8__} \
+ %{mcpu=leon:-D__leon__ -D__sparc_v8__} \
+ %{mcpu=leon3:-D__leon__ -D__sparc_v8__} \
++%{mcpu=leon3v7:-D__leon__} \
+ %{mcpu=v9:-D__sparc_v9__} \
+ %{mcpu=ultrasparc:-D__sparc_v9__} \
+ %{mcpu=ultrasparc3:-D__sparc_v9__} \
+@@ -334,6 +341,7 @@ extern enum cmodel sparc_cmodel;
+ %{mcpu=hypersparc:-Av8} \
+ %{mcpu=leon:" AS_LEON_FLAG "} \
+ %{mcpu=leon3:" AS_LEON_FLAG "} \
++%{mcpu=leon3v7:" AS_LEONV7_FLAG "} \
+ %{mv8plus:-Av8plus} \
+ %{mcpu=v9:-Av9} \
+ %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \
+@@ -1760,8 +1768,10 @@ extern int sparc_indent_opcode;
+ 
+ #ifdef HAVE_AS_LEON
+ #define AS_LEON_FLAG "-Aleon"
++#define AS_LEONV7_FLAG "-Aleon"
+ #else
+ #define AS_LEON_FLAG "-Av8"
++#define AS_LEONV7_FLAG "-Av7"
+ #endif
+ 
+ /* We use gcc _mcount for profiling.  */
+diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
+index 76c3315..954c297 100644
+--- a/gcc/config/sparc/sparc.md
++++ b/gcc/config/sparc/sparc.md
+@@ -221,6 +221,7 @@
+    hypersparc,
+    leon,
+    leon3,
++   leon3v7,
+    sparclite,
+    f930,
+    f934,
+diff --git a/gcc/config/sparc/sparc.opt b/gcc/config/sparc/sparc.opt
+index 64e4095..3cd2b60 100644
+--- a/gcc/config/sparc/sparc.opt
++++ b/gcc/config/sparc/sparc.opt
+@@ -153,6 +153,9 @@ EnumValue
+ Enum(sparc_processor_type) String(leon3) Value(PROCESSOR_LEON3)
+ 
+ EnumValue
++Enum(sparc_processor_type) String(leon3v7) Value(PROCESSOR_LEON3V7)
++
++EnumValue
+ Enum(sparc_processor_type) String(sparclite) Value(PROCESSOR_SPARCLITE)
+ 
+ EnumValue
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index bea8be2..7bb83ed 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -21099,8 +21099,8 @@ the rules of the ABI at .
+ Set the instruction set, register set, and instruction scheduling parameters
+ for machine type @var{cpu_type}.  Supported values for @var{cpu_type} are
+ @samp{v7}, @samp{cypress}, @samp{v8}, @samp{supersparc}, @samp{hypersparc},
+- at samp{leon}, @samp{leon3}, @samp{sparclite}, @samp{f930}, @samp{f934},
+- at samp{sparclite86x}, @samp{sparclet}, @samp{tsc701}, @samp{v9},
++ at samp{leon}, @samp{leon3}, @samp{leon3v7}, @samp{sparclite}, @samp{f930},
++ at samp{f934}, @samp{sparclite86x}, @samp{sparclet}, @samp{tsc701}, @samp{v9},
+ @samp{ultrasparc}, @samp{ultrasparc3}, @samp{niagara}, @samp{niagara2},
+ @samp{niagara3} and @samp{niagara4}.
+ 
+@@ -21118,7 +21118,7 @@ implementations.
+ 
+ @table @asis
+ @item v7
+-cypress
++cypress, leon3v7
+ 
+ @item v8
+ supersparc, hypersparc, leon, leon3
+@@ -21183,11 +21183,11 @@ option @option{-mcpu=@var{cpu_type}} does.
+ The same values for @option{-mcpu=@var{cpu_type}} can be used for
+ @option{-mtune=@var{cpu_type}}, but the only useful values are those
+ that select a particular CPU implementation.  Those are @samp{cypress},
+- at samp{supersparc}, @samp{hypersparc}, @samp{leon}, @samp{leon3}, @samp{f930},
+- at samp{f934}, @samp{sparclite86x}, @samp{tsc701}, @samp{ultrasparc},
+- at samp{ultrasparc3}, @samp{niagara}, @samp{niagara2}, @samp{niagara3} and
+- at samp{niagara4}.  With native Solaris and GNU/Linux toolchains, @samp{native}
+-can also be used.
++ at samp{supersparc}, @samp{hypersparc}, @samp{leon}, @samp{leon3},
++ at samp{leon3v7}, @samp{f930}, @samp{f934}, @samp{sparclite86x}, @samp{tsc701},
++ at samp{ultrasparc}, @samp{ultrasparc3}, @samp{niagara}, @samp{niagara2},
++ at samp{niagara3} and @samp{niagara4}.  With native Solaris and GNU/Linux
++toolchains, @samp{native} can also be used.
+ 
+ @item -mv8plus
+ @itemx -mno-v8plus
+-- 
+1.8.4.5
+
diff --git a/tools/4.11/gcc/sparc/gcc-4.9.2-rtems-multilibs.diff b/tools/4.11/gcc/sparc/gcc-4.9.2-rtems-multilibs.diff
new file mode 100644
index 0000000..386f9e8
--- /dev/null
+++ b/tools/4.11/gcc/sparc/gcc-4.9.2-rtems-multilibs.diff
@@ -0,0 +1,54 @@
+From 1058bd03943203e30e205c5fffe527794b54e9af Mon Sep 17 00:00:00 2001
+From: danielh <danielh at 138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Fri, 7 Nov 2014 16:40:16 +0000
+Subject: [PATCH] 2014-11-07  Daniel Hellstrom  <daniel at gaisler.com>
+
+	Backport from mainline
+	* config.gcc (sparc-*-rtems*): Clean away unused t-elf.
+	* config/sparc/t-rtems: Add leon3v7 and muser-mode multilibs.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@217232 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ gcc/config.gcc           |  2 +-
+ gcc/config/sparc/t-rtems | 13 +++++++++++--
+ 3 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index b36da74..90d4f71 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -2662,7 +2662,7 @@ sparc-*-elf*)
+ 	;;
+ sparc-*-rtems*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
+-	tmake_file="${tmake_file} sparc/t-sparc sparc/t-elf sparc/t-rtems"
++	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
+ 	;;
+ sparc-*-linux*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
+diff --git a/gcc/config/sparc/t-rtems b/gcc/config/sparc/t-rtems
+index 86a2302..ae7a33a 100644
+--- a/gcc/config/sparc/t-rtems
++++ b/gcc/config/sparc/t-rtems
+@@ -17,6 +17,15 @@
+ # <http://www.gnu.org/licenses/>.
+ #
+ 
+-MULTILIB_OPTIONS = msoft-float mcpu=v8/mcpu=leon3
+-MULTILIB_DIRNAMES = soft v8 leon3
++MULTILIB_OPTIONS = msoft-float mcpu=v8/mcpu=leon3/mcpu=leon3v7 muser-mode
++MULTILIB_DIRNAMES = soft v8 leon3 leon3v7 user-mode
+ MULTILIB_MATCHES = msoft-float=mno-fpu
++
++MULTILIB_EXCEPTIONS = muser-mode
++MULTILIB_EXCEPTIONS += mcpu=leon3
++MULTILIB_EXCEPTIONS += mcpu=leon3v7
++MULTILIB_EXCEPTIONS += msoft-float/mcpu=leon3
++MULTILIB_EXCEPTIONS += msoft-float/mcpu=leon3v7
++MULTILIB_EXCEPTIONS += msoft-float/muser-mode
++MULTILIB_EXCEPTIONS += msoft-float/mcpu=v8/muser-mode
++MULTILIB_EXCEPTIONS += mcpu=v8/muser-mode
+-- 
+1.8.4.5
+



More information about the vc mailing list