[llvmlinux] [PATCH] Refresh patches to lib/mpi.

Daniel Sanders Daniel.Sanders at imgtec.com
Wed Jun 1 09:41:48 UTC 2016


Thanks. I've pushed this along with the MIPS specific patches needed to fix the build. At this point 0efacbb (from around mid-May) builds and boots successfully. The next merge (07b7526) introduces some MIPS-specific inline assembly which clang doesn't understand yet. I'll look into this.

From: Behan Webster [mailto:behanw at converseincode.com]
Sent: 31 May 2016 17:58
To: Daniel Sanders
Cc: Compiling the Linux Kernel with Clang/LLVM
Subject: Re: [llvmlinux] [PATCH] Refresh patches to lib/mpi.

Looks safe enough to push to llvmlinux git repo.

The arm ASM would have to be tested more thoroughly before being upstreaming to mainline.

Behan

--
Behan Webster
behanw at converseincode.com<mailto:behanw at converseincode.com>


On May 31, 2016, at 9:17 AM, Daniel Sanders <daniel.sanders at imgtec.com<mailto:daniel.sanders at imgtec.com>> wrote:

lib-mpi-extern-inline.patch seems to be upstream.
lib-mpi-remove-unused.patch: Upstream added 'static' to each one.
lib-mpi.patch: Upstream added early clobber

Signed-off-by: Daniel Sanders <daniel.sanders at imgtec.com<mailto:daniel.sanders at imgtec.com>>
---
The updates are fairly minor but there's some ARM-specific inline assembly
amongst them. Could someone who knows ARM take a look before I push them?

arch/all/patches/lib-mpi-extern-inline.patch | 34 ----------------------------
arch/all/patches/lib-mpi-remove-unused.patch | 21 ++++++++---------
arch/all/patches/lib-mpi.patch               | 25 ++++++++------------
arch/all/patches/series                      |  1 -
4 files changed, 19 insertions(+), 62 deletions(-)
delete mode 100644 arch/all/patches/lib-mpi-extern-inline.patch

diff --git a/arch/all/patches/lib-mpi-extern-inline.patch b/arch/all/patches/lib-mpi-extern-inline.patch
deleted file mode 100644
index 9d4c343..0000000
--- a/arch/all/patches/lib-mpi-extern-inline.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From bb362cf302b0e953290646ce83e19585536e0d9d Mon Sep 17 00:00:00 2001
-From: Behan Webster <behanw at converseincode.com<mailto:behanw at converseincode.com>>
-Date: Mon, 27 Oct 2014 11:40:50 -0700
-Subject: [PATCH] mpi, LLVMLinux: Remove use of extern inline from lib/mpi
-
-With compilers which follow the C99 standard (like modern versions of gcc and
-clang), "extern inline" does the opposite thing from older versions of gcc
-(emits code for an externally linkable version of the inline function).
-
-"static inline" does the intended behavior in all cases instead.
-
-Signed-off-by: Behan Webster <behanw at converseincode.com<mailto:behanw at converseincode.com>>
-Suggested-by: Arnd Bergmann <arnd at arndb.de<mailto:arnd at arndb.de>>
-Cc: Arnd Bergmann <arnd at arndb.de<mailto:arnd at arndb.de>>
----
- lib/mpi/mpi-inline.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/mpi/mpi-inline.h b/lib/mpi/mpi-inline.h
-index e2b3985..c245ea3 100644
---- a/lib/mpi/mpi-inline.h
-+++ b/lib/mpi/mpi-inline.h
-@@ -30,7 +30,7 @@
- #define G10_MPI_INLINE_H
-
- #ifndef G10_MPI_INLINE_DECL
--#define G10_MPI_INLINE_DECL  extern inline
-+#define G10_MPI_INLINE_DECL  static inline
- #endif
-
- G10_MPI_INLINE_DECL mpi_limb_t
---
-1.9.1
-
diff --git a/arch/all/patches/lib-mpi-remove-unused.patch b/arch/all/patches/lib-mpi-remove-unused.patch
index 95ded19..76fc5fa 100644
--- a/arch/all/patches/lib-mpi-remove-unused.patch
+++ b/arch/all/patches/lib-mpi-remove-unused.patch
@@ -8,35 +8,32 @@ FIXME
Signed-off-by: Behan Webster <behanw at converseincode.com<mailto:behanw at converseincode.com>>
Suggested-by: Arnd Bergmann <arnd at arndb.de<mailto:arnd at arndb.de>>
Cc: Arnd Bergmann <arnd at arndb.de<mailto:arnd at arndb.de>>
+[Refreshed following upstream addition of 'static']
+Signed-off-by: Daniel Sanders <daniel.sanders at imgtec.com<mailto:daniel.sanders at imgtec.com>>
---
 lib/mpi/mpi-internal.h | 8 --------
 1 file changed, 8 deletions(-)

-diff --git a/lib/mpi/mpi-internal.h b/lib/mpi/mpi-internal.h
-index b5e538d..7208b39 100644
---- a/lib/mpi/mpi-internal.h
-+++ b/lib/mpi/mpi-internal.h
-@@ -168,20 +168,12 @@ void mpi_rshift_limbs(MPI a, unsigned int count);
+--- linux.orig/lib/mpi/mpi-internal.h
++++ linux/lib/mpi/mpi-internal.h
+@@ -168,20 +168,12 @@
 int mpi_lshift_limbs(MPI a, unsigned int count);

 /*-- mpihelp-add.c --*/
--mpi_limb_t mpihelp_add_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+-static inline mpi_limb_t mpihelp_add_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
-                                 mpi_size_t s1_size, mpi_limb_t s2_limb);
 mpi_limb_t mpihelp_add_n(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
                                  mpi_ptr_t s2_ptr, mpi_size_t size);
--mpi_limb_t mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,
+-static inline mpi_limb_t mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,
-                           mpi_ptr_t s2_ptr, mpi_size_t s2_size);

 /*-- mpihelp-sub.c --*/
--mpi_limb_t mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
+-static inline mpi_limb_t mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
-                                 mpi_size_t s1_size, mpi_limb_t s2_limb);
 mpi_limb_t mpihelp_sub_n(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,
                                  mpi_ptr_t s2_ptr, mpi_size_t size);
--mpi_limb_t mpihelp_sub(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,
+-static inline mpi_limb_t mpihelp_sub(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,
-                           mpi_ptr_t s2_ptr, mpi_size_t s2_size);

 /*-- mpihelp-cmp.c --*/
 int mpihelp_cmp(mpi_ptr_t op1_ptr, mpi_ptr_t op2_ptr, mpi_size_t size);
---
-1.9.1
-
diff --git a/arch/all/patches/lib-mpi.patch b/arch/all/patches/lib-mpi.patch
index d749331..de3c4b1 100644
--- a/arch/all/patches/lib-mpi.patch
+++ b/arch/all/patches/lib-mpi.patch
@@ -12,15 +12,15 @@ Signed-off-by: Behan Webster <behanw at converseincode.com<mailto:behanw at converseincode.com>>
Not-signed-off-by: Mark Charlebois <charlebm at gmail.com<mailto:charlebm at gmail.com>>
Suggested-by: Arnd Bergmann <arnd at arndb.de<mailto:arnd at arndb.de>>
Cc: Arnd Bergmann <arnd at arndb.de<mailto:arnd at arndb.de>>
+[Refreshed following upstream addition of early-clobber]
+Signed-off-by: Daniel Sanders <daniel.sanders at imgtec.com<mailto:daniel.sanders at imgtec.com>>
---
 lib/mpi/Makefile   | 2 ++
 lib/mpi/longlong.h | 9 +++------
 2 files changed, 5 insertions(+), 6 deletions(-)

-diff --git a/lib/mpi/Makefile b/lib/mpi/Makefile
-index 019a68c..d5553f6 100644
---- a/lib/mpi/Makefile
-+++ b/lib/mpi/Makefile
+--- linux.orig/lib/mpi/Makefile
++++ linux/lib/mpi/Makefile
@@ -4,6 +4,8 @@

 obj-$(CONFIG_MPILIB) = mpi.o
@@ -30,11 +30,9 @@ index 019a68c..d5553f6 100644
 mpi-y = \
          generic_mpih-lshift.o              \
          generic_mpih-mul1.o              \
-diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h
-index aac5114..76fc0da 100644
---- a/lib/mpi/longlong.h
-+++ b/lib/mpi/longlong.h
-@@ -193,8 +193,7 @@ extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype);
+--- linux.orig/lib/mpi/longlong.h
++++ linux/lib/mpi/longlong.h
+@@ -193,8 +193,7 @@
                      "rI" ((USItype)(bl)))
 #if defined __ARM_ARCH_2__ || defined __ARM_ARCH_3__
 #define umul_ppmm(xh, xl, a, b) \
@@ -44,19 +42,16 @@ index aac5114..76fc0da 100644
                      "mov    %|r2, %3, lsr #16                     @ BBBB\n" \
                      "bic      %|r1, %2, %|r0, lsl #16                        @ aaaa\n" \
                      "bic      %0, %3, %|r2, lsl #16              @ bbbb\n" \
-@@ -213,10 +212,8 @@ extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype);
+@@ -213,10 +212,8 @@
          : "r0", "r1", "r2")
 #else
 #define umul_ppmm(xh, xl, a, b) \
-         __asm__ ("%@ Inlined umul_ppmm\n" \
-                     "umull %r1, %r0, %r2, %r3" \
-         : "=&r" ((USItype)(xh)), \
--                                "=r" ((USItype)(xl)) \
+-                               "=&r" ((USItype)(xl)) \
+        __asm__ ("umull %1, %0, %2, %3" \
-+       : "=&r" ((xh)), "=r" ((xl)) \
++      : "=&r" ((xh)), "=&r" ((xl)) \
          : "r" ((USItype)(a)), \
                                  "r" ((USItype)(b)) \
          : "r0", "r1")
---
-1.9.1
-
diff --git a/arch/all/patches/series b/arch/all/patches/series
index 0db8ba4..4eeae7e 100644
--- a/arch/all/patches/series
+++ b/arch/all/patches/series
@@ -8,7 +8,6 @@ kbuild-asm-defines.patch
kbuild-cc-option.patch
#ethernet-emulex.patch
lib-mpi.patch
-lib-mpi-extern-inline.patch
lib-mpi-not-clang.patch
lib-mpi-remove-unused.patch
nested-function-md_bcache_sysfs.patch
--
2.1.4

_______________________________________________
LLVMLinux mailing list
LLVMLinux at lists.linuxfoundation.org<mailto:LLVMLinux at lists.linuxfoundation.org>
https://lists.linuxfoundation.org/mailman/listinfo/llvmlinux

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/llvmlinux/attachments/20160601/2dfa2c4a/attachment-0001.html>


More information about the LLVMLinux mailing list