diff -up openssl-fips-0.9.8e/crypto/bn/bn_lcl.h.ia64 openssl-fips-0.9.8e/crypto/bn/bn_lcl.h --- openssl-fips-0.9.8e/crypto/bn/bn_lcl.h.ia64 2010-04-16 18:15:11.000000000 +0200 +++ openssl-fips-0.9.8e/crypto/bn/bn_lcl.h 2010-04-16 18:15:11.000000000 +0200 @@ -279,6 +279,15 @@ extern "C" { # define BN_UMULT_HIGH(a,b) __umulh((a),(b)) # define BN_UMULT_LOHI(low,high,a,b) ((low)=_umul128((a),(b),&(high))) # endif +# elif defined(__ia64) && defined(SIXTY_FOUR_BIT_LONG) +# if defined(__GNUC__) +# define BN_UMULT_HIGH(a,b) ({ \ + register BN_ULONG ret; \ + asm ("xmpy.hu %0 = %1, %2" \ + : "=f"(ret) \ + : "f"(a), "f"(b)); \ + ret; }) +# endif /* compiler */ # endif /* cpu */ #endif /* OPENSSL_NO_ASM */