12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- --- libgcrypt-1.4.4.orig/mpi/longlong.h 2008-08-19 17:20:03.000000000 +0200
- +++ libgcrypt-1.4.4/mpi/longlong.h 2009-06-14 19:45:28.000000000 +0200
- @@ -710,18 +710,35 @@ extern USItype __udiv_qrnnd ();
- #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 @@ extern USItype __udiv_qrnnd ();
- ************** 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" \
|