--- /dev/null
+From 940d4113f3306e07a1f86541489b686d1a979d54 Mon Sep 17 00:00:00 2001
+From: Yoshinori Sato <ysato@users.sourceforge.jp>
+Date: Sat, 20 Jun 2015 14:02:19 +0900
+Subject: sh: New gcc support
+
+From: Yoshinori Sato <ysato@users.sourceforge.jp>
+
+commit 940d4113f3306e07a1f86541489b686d1a979d54 upstream.
+
+New gcc (4.8 or later) used new shift helper functions.
+So we need added new helper to private libgcc.
+
+Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
+Signed-off-by: Rich Felker <dalias@libc.org>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/sh/kernel/sh_ksyms_32.c | 3 +++
+ arch/sh/lib/ashlsi3.S | 35 ++++++++++++++++++++++++++---------
+ arch/sh/lib/ashrsi3.S | 33 ++++++++++++++++++++++++---------
+ arch/sh/lib/lshrsi3.S | 34 +++++++++++++++++++++++++---------
+ 4 files changed, 78 insertions(+), 27 deletions(-)
+
+--- a/arch/sh/kernel/sh_ksyms_32.c
++++ b/arch/sh/kernel/sh_ksyms_32.c
+@@ -34,6 +34,9 @@ DECLARE_EXPORT(__sdivsi3);
+ DECLARE_EXPORT(__lshrsi3);
+ DECLARE_EXPORT(__ashrsi3);
+ DECLARE_EXPORT(__ashlsi3);
++DECLARE_EXPORT(__lshrsi3_r0);
++DECLARE_EXPORT(__ashrsi3_r0);
++DECLARE_EXPORT(__ashlsi3_r0);
+ DECLARE_EXPORT(__ashiftrt_r4_6);
+ DECLARE_EXPORT(__ashiftrt_r4_7);
+ DECLARE_EXPORT(__ashiftrt_r4_8);
+--- a/arch/sh/lib/ashlsi3.S
++++ b/arch/sh/lib/ashlsi3.S
+@@ -54,21 +54,38 @@ Boston, MA 02110-1301, USA. */
+ !
+ ! (none)
+ !
++! __ashlsi3_r0
++!
++! Entry:
++!
++! r4: Value to shift
++! r0: Shifts
++!
++! Exit:
++!
++! r0: Result
++!
++! Destroys:
++!
++! (none)
++
++
+ .global __ashlsi3
++ .global __ashlsi3_r0
+
+ .align 2
+ __ashlsi3:
+- mov #31,r0
+- and r0,r5
++ mov r5,r0
++ .align 2
++__ashlsi3_r0:
++ and #31,r0
++ mov.l r4,@-r15
++ mov r0,r4
+ mova ashlsi3_table,r0
+- mov.b @(r0,r5),r5
+-#ifdef __sh1__
+- add r5,r0
++ mov.b @(r0,r4),r4
++ add r4,r0
+ jmp @r0
+-#else
+- braf r5
+-#endif
+- mov r4,r0
++ mov.l @r15+,r0
+
+ .align 2
+ ashlsi3_table:
+--- a/arch/sh/lib/ashrsi3.S
++++ b/arch/sh/lib/ashrsi3.S
+@@ -54,22 +54,37 @@ Boston, MA 02110-1301, USA. */
+ !
+ ! (none)
+ !
++! __ashrsi3_r0
++!
++! Entry:
++!
++! r4: Value to shift
++! r0: Shifts
++!
++! Exit:
++!
++! r0: Result
++!
++! Destroys:
++!
++! (none)
+
+ .global __ashrsi3
++ .global __ashrsi3_r0
+
+ .align 2
+ __ashrsi3:
+- mov #31,r0
+- and r0,r5
++ mov r5,r0
++ .align 2
++__ashrsi3_r0:
++ and #31,r0
++ mov.l r4,@-r15
++ mov r0,r4
+ mova ashrsi3_table,r0
+- mov.b @(r0,r5),r5
+-#ifdef __sh1__
+- add r5,r0
++ mov.b @(r0,r4),r4
++ add r4,r0
+ jmp @r0
+-#else
+- braf r5
+-#endif
+- mov r4,r0
++ mov.l @r15+,r0
+
+ .align 2
+ ashrsi3_table:
+--- a/arch/sh/lib/lshrsi3.S
++++ b/arch/sh/lib/lshrsi3.S
+@@ -54,21 +54,37 @@ Boston, MA 02110-1301, USA. */
+ !
+ ! (none)
+ !
++! __lshrsi3_r0
++!
++! Entry:
++!
++! r0: Value to shift
++! r5: Shifts
++!
++! Exit:
++!
++! r0: Result
++!
++! Destroys:
++!
++! (none)
++!
+ .global __lshrsi3
++ .global __lshrsi3_r0
+
+ .align 2
+ __lshrsi3:
+- mov #31,r0
+- and r0,r5
++ mov r5,r0
++ .align 2
++__lshrsi3_r0:
++ and #31,r0
++ mov.l r4,@-r15
++ mov r0,r4
+ mova lshrsi3_table,r0
+- mov.b @(r0,r5),r5
+-#ifdef __sh1__
+- add r5,r0
++ mov.b @(r0,r4),r4
++ add r4,r0
+ jmp @r0
+-#else
+- braf r5
+-#endif
+- mov r4,r0
++ mov.l @r15+,r0
+
+ .align 2
+ lshrsi3_table: