1 The MIPS port for GCC-4.4 no longer recognizes the h asm constraint.
2 Patch from: https://forum.openwrt.org/viewtopic.php?id=20520
4 --- libgcrypt/mpi/longlong.h-asdf 2009-08-04 09:58:51.000000000 +0930
5 +++ libgcrypt/mpi/longlong.h 2009-08-04 10:10:27.000000000 +0930
7 #endif /* __m88110__ */
8 #endif /* __m88000__ */
10 +/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
11 +#if defined (__GNUC__) && defined (__GNUC_MINOR__)
12 +#define __GNUC_PREREQ(maj, min) \
13 + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
15 +#define __GNUC_PREREQ(maj, min) 0
18 /***************************************
19 ************** MIPS *****************
20 ***************************************/
21 #if defined (__mips__) && W_TYPE_SIZE == 32
22 -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
23 +#if __GNUC_PREREQ (4,4)
24 +#define umul_ppmm(w1, w0, u, v) \
26 + UDItype __ll = (UDItype)(u) * (v); \
31 +#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7)
32 #define umul_ppmm(w1, w0, u, v) \
33 __asm__ ("multu %2,%3" \
34 : "=l" ((USItype)(w0)), \
35 "=h" ((USItype)(w1)) \
36 : "d" ((USItype)(u)), \
40 +#if !defined (umul_ppmm)
41 #define umul_ppmm(w1, w0, u, v) \
42 __asm__ ("multu %2,%3 \n" \
45 ************** MIPS/64 **************
46 ***************************************/
47 #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
48 -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
49 +#if __GNUC_PREREQ (4,4)
50 +#define umul_ppmm(w1, w0, u, v) \
52 + typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \
53 + __ll_UTItype __ll = (__ll_UTItype)(u) * (v); \
58 +#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7)
59 #define umul_ppmm(w1, w0, u, v) \
60 __asm__ ("dmultu %2,%3" \
61 : "=l" ((UDItype)(w0)), \
62 "=h" ((UDItype)(w1)) \
63 : "d" ((UDItype)(u)), \
67 +#if !defined (umul_ppmm)
68 #define umul_ppmm(w1, w0, u, v) \
69 __asm__ ("dmultu %2,%3 \n" \