aboutsummaryrefslogtreecommitdiff
path: root/crypto/sha/asm/sha1-x86_64.pl
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2011-07-01 21:23:13 +0000
committerAndy Polyakov <appro@openssl.org>2011-07-01 21:23:13 +0000
commitda5e9871e9b01b50f2749760e39a67e9ff6d6482 (patch)
tree7581ea147fdc473a550b16a5e8fd091008daa69e /crypto/sha/asm/sha1-x86_64.pl
parent94c64f9a1cbadd0e6f9a12811506f94cf750025c (diff)
downloadopenssl-da5e9871e9b01b50f2749760e39a67e9ff6d6482.zip
openssl-da5e9871e9b01b50f2749760e39a67e9ff6d6482.tar.gz
openssl-da5e9871e9b01b50f2749760e39a67e9ff6d6482.tar.bz2
sha1-x86_64.pl: fix win64-specific typos and add masm support.
Diffstat (limited to 'crypto/sha/asm/sha1-x86_64.pl')
-rwxr-xr-xcrypto/sha/asm/sha1-x86_64.pl13
1 files changed, 9 insertions, 4 deletions
diff --git a/crypto/sha/asm/sha1-x86_64.pl b/crypto/sha/asm/sha1-x86_64.pl
index 61ec169..afcfb87 100755
--- a/crypto/sha/asm/sha1-x86_64.pl
+++ b/crypto/sha/asm/sha1-x86_64.pl
@@ -75,9 +75,12 @@ die "can't locate x86_64-xlate.pl";
$avx=1 if (`$ENV{CC} -Wa,-v -c -o /dev/null -x assembler /dev/null 2>&1`
=~ /GNU assembler version ([2-9]\.[0-9]+)/ &&
$1>=2.19);
-$avx=1 if (!$avx && $flavour =~ /nasm/ &&
+$avx=1 if (!$avx && $win64 && ($flavour =~ /nasm/ || $ENV{ASM} =~ /nasm/) &&
`nasm -v 2>&1` =~ /NASM version ([2-9]\.[0-9]+)/ &&
$1>=2.03);
+$avx=1 if (!$avx && $win64 && ($flavour =~ /masm/ || $ENV{ASM} =~ /ml64/) &&
+ `ml64 2>&1` =~ /Version ([0-9]+)\./ &&
+ $1>=10);
open STDOUT,"| $^X $xlate $flavour $output";
@@ -697,7 +700,7 @@ $code.=<<___ if ($win64);
movaps 64+64(%rsp),%xmm10
___
$code.=<<___;
- lea `64+($win64?6*16:0)`(%rsp),%rsi
+ lea `64+($win64?5*16:0)`(%rsp),%rsi
mov 0(%rsi),%r12
mov 8(%rsi),%rbp
mov 16(%rsi),%rbx
@@ -1055,7 +1058,7 @@ $code.=<<___ if ($win64);
movaps 64+64(%rsp),%xmm10
___
$code.=<<___;
- lea `64+($win64?6*16:0)`(%rsp),%rsi
+ lea `64+($win64?5*16:0)`(%rsp),%rsi
mov 0(%rsi),%r12
mov 8(%rsi),%rbp
mov 16(%rsi),%rbx
@@ -1168,12 +1171,14 @@ ssse3_handler:
lea 512($context),%rdi # &context.Xmm6
mov \$10,%ecx
.long 0xa548f3fc # cld; rep movsq
- lea 24+5*16(%rax),%rax # adjust stack pointer
+ lea `24+64+5*16`(%rax),%rax # adjust stack pointer
mov -8(%rax),%rbx
mov -16(%rax),%rbp
+ mov -24(%rax),%r12
mov %rbx,144($context) # restore context->Rbx
mov %rbp,160($context) # restore context->Rbp
+ mov %r12,216($context) # restore cotnext->R12
.Lcommon_seh_tail:
mov 8(%rax),%rdi