Commit a58fdc7a authored by Andy Polyakov's avatar Andy Polyakov
Browse files

bn_lcl.h: gcc removed support for "h" constraint, which broke inline

assembler.
parent d21bf10d
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -300,6 +300,12 @@ extern "C" {
#  endif
# elif defined(__mips) && (defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT_LONG))
#  if defined(__GNUC__) && __GNUC__>=2
#   if __GNUC__>=4 && __GNUC_MINOR__>=4 /* "h" constraint is no more since 4.4 */
#     define BN_UMULT_HIGH(a,b)		 (((__uint128_t)(a)*(b))>>64)
#     define BN_UMULT_LOHI(low,high,a,b) ({	\
	__uint128_t ret=(__uint128_t)(a)*(b);	\
	(high)=ret>>64; (low)=ret;	 })
#   else
#     define BN_UMULT_HIGH(a,b)	({	\
	register BN_ULONG ret;		\
	asm ("dmultu	%1,%2"		\
@@ -311,6 +317,7 @@ extern "C" {
	     : "=l"(low),"=h"(high)	\
	     : "r"(a), "r"(b));
#    endif
#  endif
# endif		/* cpu */
#endif		/* OPENSSL_NO_ASM */