[package] fix the removal of the h constraint in gcc4.4 with libgcrypt
git-svn-id: svn://svn.openwrt.org/openwrt/packages@17787 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
ddff223963
commit
7c1944e81d
70
libs/libgcrypt/patches/001-mips-h-constraint.patch
Normal file
70
libs/libgcrypt/patches/001-mips-h-constraint.patch
Normal file
@ -0,0 +1,70 @@
|
||||
The MIPS port for GCC-4.4 no longer recognizes the h asm constraint.
|
||||
Patch from: https://forum.openwrt.org/viewtopic.php?id=20520
|
||||
|
||||
--- libgcrypt/mpi/longlong.h-asdf 2009-08-04 09:58:51.000000000 +0930
|
||||
+++ libgcrypt/mpi/longlong.h 2009-08-04 10:10:27.000000000 +0930
|
||||
@@ -710,18 +710,35 @@
|
||||
#endif /* __m88110__ */
|
||||
#endif /* __m88000__ */
|
||||
|
||||
+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
|
||||
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
|
||||
+#define __GNUC_PREREQ(maj, min) \
|
||||
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
+#else
|
||||
+#define __GNUC_PREREQ(maj, min) 0
|
||||
+#endif
|
||||
+
|
||||
/***************************************
|
||||
************** MIPS *****************
|
||||
***************************************/
|
||||
#if defined (__mips__) && W_TYPE_SIZE == 32
|
||||
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
|
||||
+#if __GNUC_PREREQ (4,4)
|
||||
+#define umul_ppmm(w1, w0, u, v) \
|
||||
+ do { \
|
||||
+ UDItype __ll = (UDItype)(u) * (v); \
|
||||
+ w1 = __ll >> 32; \
|
||||
+ w0 = __ll; \
|
||||
+ } while (0)
|
||||
+#endif
|
||||
+#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("multu %2,%3" \
|
||||
: "=l" ((USItype)(w0)), \
|
||||
"=h" ((USItype)(w1)) \
|
||||
: "d" ((USItype)(u)), \
|
||||
"d" ((USItype)(v)))
|
||||
-#else
|
||||
+#endif
|
||||
+#if !defined (umul_ppmm)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("multu %2,%3 \n" \
|
||||
"mflo %0 \n" \
|
||||
@@ -739,14 +756,24 @@
|
||||
************** MIPS/64 **************
|
||||
***************************************/
|
||||
#if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
|
||||
-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
|
||||
+#if __GNUC_PREREQ (4,4)
|
||||
+#define umul_ppmm(w1, w0, u, v) \
|
||||
+ do { \
|
||||
+ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \
|
||||
+ __ll_UTItype __ll = (__ll_UTItype)(u) * (v); \
|
||||
+ w1 = __ll >> 64; \
|
||||
+ w0 = __ll; \
|
||||
+ } while (0)
|
||||
+#endif
|
||||
+#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("dmultu %2,%3" \
|
||||
: "=l" ((UDItype)(w0)), \
|
||||
"=h" ((UDItype)(w1)) \
|
||||
: "d" ((UDItype)(u)), \
|
||||
"d" ((UDItype)(v)))
|
||||
-#else
|
||||
+#endif
|
||||
+#if !defined (umul_ppmm)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("dmultu %2,%3 \n" \
|
||||
"mflo %0 \n" \
|
Loading…
x
Reference in New Issue
Block a user