projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bsaes-armv7.pl: remove partial register operations in CTR subroutine.
[openssl.git]
/
crypto
/
md32_common.h
diff --git
a/crypto/md32_common.h
b/crypto/md32_common.h
index 089c4502905c68d78a5b267bc93a2e124b5a2b73..d7f7a26e7023241b1ca3b3a03a0bc2968a296c00 100644
(file)
--- a/
crypto/md32_common.h
+++ b/
crypto/md32_common.h
@@
-142,8
+142,10
@@
*/
#undef ROTATE
#ifndef PEDANTIC
*/
#undef ROTATE
#ifndef PEDANTIC
-# if defined(_MSC_VER)
|| defined(__ICC)
+# if defined(_MSC_VER)
# define ROTATE(a,n) _lrotl(a,n)
# define ROTATE(a,n) _lrotl(a,n)
+# elif defined(__ICC)
+# define ROTATE(a,n) _rotl(a,n)
# elif defined(__MWERKS__)
# if defined(__POWERPC__)
# define ROTATE(a,n) __rlwinm(a,n,0,31)
# elif defined(__MWERKS__)
# if defined(__POWERPC__)
# define ROTATE(a,n) __rlwinm(a,n,0,31)
@@
-165,7
+167,7
@@
asm ( \
"roll %1,%0" \
: "=r"(ret) \
asm ( \
"roll %1,%0" \
: "=r"(ret) \
- : "I"(n), "0"(
a
) \
+ : "I"(n), "0"(
(unsigned int)(a)
) \
: "cc"); \
ret; \
})
: "cc"); \
ret; \
})
@@
-241,11
+243,11
@@
#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
@@
-293,7
+295,7
@@
int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
* Wei Dai <weidai@eskimo.com> for pointing it out. */
if (l < c->Nl) /* overflow */
c->Nh++;
* Wei Dai <weidai@eskimo.com> for pointing it out. */
if (l < c->Nl) /* overflow */
c->Nh++;
- c->Nh+=(
len>>29);
/* might cause compiler warning on 16-bit */
+ c->Nh+=(
HASH_LONG)(len>>29);
/* might cause compiler warning on 16-bit */
c->Nl=l;
n = c->num;
c->Nl=l;
n = c->num;
@@
-301,7
+303,7
@@
int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
{
p=(unsigned char *)c->data;
{
p=(unsigned char *)c->data;
- if (
(n+len)
>= HASH_CBLOCK)
+ if (
len >= HASH_CBLOCK || len+n
>= HASH_CBLOCK)
{
memcpy (p+n,data,HASH_CBLOCK-n);
HASH_BLOCK_DATA_ORDER (c,p,1);
{
memcpy (p+n,data,HASH_CBLOCK-n);
HASH_BLOCK_DATA_ORDER (c,p,1);
@@
-331,7
+333,7
@@
int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
if (len != 0)
{
p = (unsigned char *)c->data;
if (len != 0)
{
p = (unsigned char *)c->data;
- c->num = len;
+ c->num =
(unsigned int)
len;
memcpy (p,data,len);
}
return 1;
memcpy (p,data,len);
}
return 1;
@@
-383,6
+385,7
@@
int HASH_FINAL (unsigned char *md, HASH_CTX *c)
}
#ifndef MD32_REG_T
}
#ifndef MD32_REG_T
+#if defined(__alpha) || defined(__sparcv9) || defined(__mips)
#define MD32_REG_T long
/*
* This comment was originaly written for MD5, which is why it
#define MD32_REG_T long
/*
* This comment was originaly written for MD5, which is why it
@@
-400,9
+403,15
@@
int HASH_FINAL (unsigned char *md, HASH_CTX *c)
* Well, to be honest it should say that this *prevents*
* performance degradation.
* <appro@fy.chalmers.se>
* Well, to be honest it should say that this *prevents*
* performance degradation.
* <appro@fy.chalmers.se>
- * Apparently there're LP64 compilers that generate better
- * code if A-D are declared int. Most notably GCC-x86_64
- * generates better code.
+ */
+#else
+/*
+ * Above is not absolute and there are LP64 compilers that
+ * generate better code if MD32_REG_T is defined int. The above
+ * pre-processor condition reflects the circumstances under which
+ * the conclusion was made and is subject to further extension.
* <appro@fy.chalmers.se>
*/
* <appro@fy.chalmers.se>
*/
+#define MD32_REG_T int
+#endif
#endif
#endif