diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2010-02-07 22:01:27 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2010-02-07 22:01:27 +0100 |
commit | 7de93724af9791bad0a8e887d02bf7a3a872305c (patch) | |
tree | c4de7f2ecaa01cc7cf371eb3b771a6b8a8f9a9de /package/gnupg/patches/patch-mpi_longlong_h | |
parent | bd1730cdff6b88d54d5fdb3d63d5733ca33abe59 (diff) | |
parent | 254ae86e16cddf282b36c0593148e24151ce1f96 (diff) |
Merge branch 'master' of git+ssh://openadk.org/git/openadk
Diffstat (limited to 'package/gnupg/patches/patch-mpi_longlong_h')
-rw-r--r-- | package/gnupg/patches/patch-mpi_longlong_h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/package/gnupg/patches/patch-mpi_longlong_h b/package/gnupg/patches/patch-mpi_longlong_h new file mode 100644 index 000000000..85fc65552 --- /dev/null +++ b/package/gnupg/patches/patch-mpi_longlong_h @@ -0,0 +1,67 @@ +--- gnupg-1.4.9.orig/mpi/longlong.h 2007-10-23 11:15:14.000000000 +0200 ++++ gnupg-1.4.9/mpi/longlong.h 2009-06-19 19:16:25.000000000 +0200 +@@ -706,18 +706,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" \ +@@ -735,14 +752,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" \ |