Fix s390x-specific HOST_l2c|c2l.
authorAndy Polyakov <appro@openssl.org>
Tue, 2 Mar 2010 16:23:40 +0000 (16:23 +0000)
committerAndy Polyakov <appro@openssl.org>
Tue, 2 Mar 2010 16:23:40 +0000 (16:23 +0000)
Submitted by: Andreas Krebbel

crypto/md32_common.h

index 279916f..1cb7839 100644 (file)
 #ifndef PEDANTIC
 # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
 #  if defined(__s390x__)
 #ifndef PEDANTIC
 # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
 #  if defined(__s390x__)
-#   define HOST_c2l(c,l)       ({ asm ("lrv    %0,0(%1)"               \
-                                       :"=r"(l) : "r"(c));             \
+#   define HOST_c2l(c,l)       ({ asm ("lrv    %0,%1"                  \
+                                  :"=d"(l) :"m"(*(const unsigned int *)(c)));\
                                   (c)+=4; (l);                         })
                                   (c)+=4; (l);                         })
-#   define HOST_l2c(l,c)       ({ asm ("strv   %0,0(%1)"               \
-                                       : : "r"(l),"r"(c) : "memory");  \
+#   define HOST_l2c(l,c)       ({ asm ("strv   %1,%0"                  \
+                                  :"=m"(*(unsigned int *)(c)) :"d"(l));\
                                   (c)+=4; (l);                         })
 #  endif
 # endif
                                   (c)+=4; (l);                         })
 #  endif
 # endif