Changeset View
Changeset View
Standalone View
Standalone View
gnupg-1.4.10/mpi/longlong.h
Context not available. | |||||
#endif /* __m88110__ */ | #endif /* __m88110__ */ | ||||
#endif /* __m88000__ */ | #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 ***************** | ************** MIPS ***************** | ||||
***************************************/ | ***************************************/ | ||||
#if defined (__mips__) && W_TYPE_SIZE == 32 | #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) \ | #define umul_ppmm(w1, w0, u, v) \ | ||||
__asm__ ("multu %2,%3" \ | __asm__ ("multu %2,%3" \ | ||||
: "=l" ((USItype)(w0)), \ | : "=l" ((USItype)(w0)), \ | ||||
"=h" ((USItype)(w1)) \ | "=h" ((USItype)(w1)) \ | ||||
: "d" ((USItype)(u)), \ | : "d" ((USItype)(u)), \ | ||||
"d" ((USItype)(v))) | "d" ((USItype)(v))) | ||||
#else | #endif | ||||
#if !defined (umul_ppmm) | |||||
#define umul_ppmm(w1, w0, u, v) \ | #define umul_ppmm(w1, w0, u, v) \ | ||||
__asm__ ("multu %2,%3 \n" \ | __asm__ ("multu %2,%3 \n" \ | ||||
"mflo %0 \n" \ | "mflo %0 \n" \ | ||||
Context not available. |