Commit #16325 fixed one thing but broke DH with certain moduli [from HEAD].
[oweals/openssl.git] / crypto / md32_common.h
index 0cbcfaf8a20ba279480904765a39fcf47f84e875..0e625a8e55c01c4f7103a43ba77681e13f44e5d1 100644 (file)
 
 #ifndef PEDANTIC
 # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-#  if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
+#  if ((defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)) || \
+      (defined(__x86_64) || defined(__x86_64__))
     /*
      * This gives ~30-40% performance improvement in SHA-256 compiled
      * with gcc [on P4]. Well, first macro to be frank. We can pull
 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
 
 #if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-  /* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
-# define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, l)
-# define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, l)
+# ifndef B_ENDIAN
+   /* See comment in DATA_ORDER_IS_BIG_ENDIAN section. */
+#  define HOST_c2l(c,l)        ((l)=*((const unsigned int *)(c)), (c)+=4, l)
+#  define HOST_l2c(l,c)        (*((unsigned int *)(c))=(l), (c)+=4, l)
+# endif
 #endif
 
 #ifndef HOST_c2l