x86_64 assembly pack: Win64 SEH face-lift.
[openssl.git] / crypto / whrlpool / asm / wp-x86_64.pl
index c0b21d13ed492c41ec4e5474220aa36fe7808d72..d0b7ecc9e7010382f33dfd745397b184e6fd1f15 100644 (file)
@@ -66,6 +66,7 @@ $code=<<___;
 .type  $func,\@function,3
 .align 16
 $func:
 .type  $func,\@function,3
 .align 16
 $func:
+       mov     %rsp,%rax
        push    %rbx
        push    %rbp
        push    %r12
        push    %rbx
        push    %rbp
        push    %r12
@@ -73,7 +74,6 @@ $func:
        push    %r14
        push    %r15
 
        push    %r14
        push    %r15
 
-       mov     %rsp,%r11
        sub     \$128+40,%rsp
        and     \$-64,%rsp
 
        sub     \$128+40,%rsp
        and     \$-64,%rsp
 
@@ -81,7 +81,7 @@ $func:
        mov     %rdi,0(%r10)            # save parameter block
        mov     %rsi,8(%r10)
        mov     %rdx,16(%r10)
        mov     %rdi,0(%r10)            # save parameter block
        mov     %rsi,8(%r10)
        mov     %rdx,16(%r10)
-       mov     %r11,32(%r10)           # saved stack pointer
+       mov     %rax,32(%r10)           # saved stack pointer
 .Lprologue:
 
        mov     %r10,%rbx
 .Lprologue:
 
        mov     %r10,%rbx
@@ -205,13 +205,13 @@ $code.=<<___;
        jmp     .Louterloop
 .Lalldone:
        mov     32(%rbx),%rsi           # restore saved pointer
        jmp     .Louterloop
 .Lalldone:
        mov     32(%rbx),%rsi           # restore saved pointer
-       mov     (%rsi),%r15
-       mov     8(%rsi),%r14
-       mov     16(%rsi),%r13
-       mov     24(%rsi),%r12
-       mov     32(%rsi),%rbp
-       mov     40(%rsi),%rbx
-       lea     48(%rsi),%rsp
+       mov     -48(%rsi),%r15
+       mov     -40(%rsi),%r14
+       mov     -32(%rsi),%r13
+       mov     -24(%rsi),%r12
+       mov     -16(%rsi),%rbp
+       mov     -8(%rsi),%rbx
+       lea     (%rsi),%rsp
 .Lepilogue:
        ret
 .size  $func,.-$func
 .Lepilogue:
        ret
 .size  $func,.-$func
@@ -526,7 +526,6 @@ se_handler:
        jae     .Lin_prologue
 
        mov     128+32(%rax),%rax       # pull saved stack pointer
        jae     .Lin_prologue
 
        mov     128+32(%rax),%rax       # pull saved stack pointer
-       lea     48(%rax),%rax
 
        mov     -8(%rax),%rbx
        mov     -16(%rax),%rbp
 
        mov     -8(%rax),%rbx
        mov     -16(%rax),%rbp