Browse Source

sparc64: fix compile with gcc 7.1

Waldemar Brodkorb 8 years ago
parent
commit
30eeae75b9
1 changed files with 70 additions and 0 deletions
  1. 70 0
      target/linux/patches/4.11.3/0001-sparc64.patch

+ 70 - 0
target/linux/patches/4.11.3/0001-sparc64.patch

@@ -0,0 +1,70 @@
+From 1b4af13ff2cc6897557bb0b8d9e2fad4fa4d67aa Mon Sep 17 00:00:00 2001
+From: "David S. Miller" <davem@davemloft.net>
+Date: Mon, 5 Jun 2017 11:28:57 -0700
+Subject: [PATCH] sparc64: Add __multi3 for gcc 7.x and later.
+
+Reported-by: Waldemar Brodkorb <wbx@openadk.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ arch/sparc/lib/Makefile |  1 +
+ arch/sparc/lib/multi3.S | 35 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 36 insertions(+)
+ create mode 100644 arch/sparc/lib/multi3.S
+
+diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile
+index 69912d2..07c03e7 100644
+--- a/arch/sparc/lib/Makefile
++++ b/arch/sparc/lib/Makefile
+@@ -15,6 +15,7 @@ lib-$(CONFIG_SPARC32) += copy_user.o locks.o
+ lib-$(CONFIG_SPARC64) += atomic_64.o
+ lib-$(CONFIG_SPARC32) += lshrdi3.o ashldi3.o
+ lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o
++lib-$(CONFIG_SPARC64) += multi3.o
+ 
+ lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o
+ lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o
+diff --git a/arch/sparc/lib/multi3.S b/arch/sparc/lib/multi3.S
+new file mode 100644
+index 0000000..d6b6c97
+--- /dev/null
++++ b/arch/sparc/lib/multi3.S
+@@ -0,0 +1,35 @@
++#include <linux/linkage.h>
++#include <asm/export.h>
++
++	.text
++	.align	4
++ENTRY(__multi3) /* %o0 = u, %o1 = v */
++	mov	%o1, %g1
++	srl	%o3, 0, %g4
++	mulx	%g4, %g1, %o1
++	srlx	%g1, 0x20, %g3
++	mulx	%g3, %g4, %g5
++	sllx	%g5, 0x20, %o5
++	srl	%g1, 0, %g4
++	sub	%o1, %o5, %o5
++	srlx	%o5, 0x20, %o5
++	addcc	%g5, %o5, %g5
++	srlx	%o3, 0x20, %o5
++	mulx	%g4, %o5, %g4
++	mulx	%g3, %o5, %o5
++	sethi	%hi(0x80000000), %g3
++	addcc	%g5, %g4, %g5
++	srlx	%g5, 0x20, %g5
++	add	%g3, %g3, %g3
++	movcc	%xcc, %g0, %g3
++	addcc	%o5, %g5, %o5
++	sllx	%g4, 0x20, %g4
++	add	%o1, %g4, %o1
++	add	%o5, %g3, %g2
++	mulx	%g1, %o2, %g1
++	add	%g1, %g2, %g1
++	mulx	%o0, %o3, %o0
++	retl
++	 add	%g1, %o0, %o0
++ENDPROC(__multi3)
++EXPORT_SYMBOL(__multi3)
+-- 
+2.1.2.532.g19b5d50
+
+