aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/camellia
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2008-12-19 11:19:19 +0000
committerAndy Polyakov <appro@openssl.org>2008-12-19 11:19:19 +0000
commit702e7425150a2dcee7308af034984d21edb717f5 (patch)
treeab91f91a6b5e6c3599398a78e322495e1bdf9b92 /crypto/camellia
parentbe01f79d3d1b1e661d390d86cff4335daed8bfcd (diff)
downloadopenssl-702e7425150a2dcee7308af034984d21edb717f5.tar.gz
cmll-x86_64.pl: bug fix and size optimization of Win64 SEH section.
Diffstat (limited to 'crypto/camellia')
-rw-r--r--crypto/camellia/asm/cmll-x86_64.pl37
1 files changed, 6 insertions, 31 deletions
diff --git a/crypto/camellia/asm/cmll-x86_64.pl b/crypto/camellia/asm/cmll-x86_64.pl
index 7d76c820da..199165f95f 100644
--- a/crypto/camellia/asm/cmll-x86_64.pl
+++ b/crypto/camellia/asm/cmll-x86_64.pl
@@ -876,11 +876,12 @@ common_se_handler:
push %rdi
push %rbx
push %rbp
+ push %r12
push %r13
push %r14
push %r15
pushfq
- lea -72(%rsp),%rsp
+ lea -64(%rsp),%rsp
mov 120($context),%rax # pull context->Rax
mov 248($context),%rbx # pull context->Rip
@@ -919,36 +920,7 @@ common_se_handler:
mov %rsi,168($context) # restore context->Rsi
mov %rdi,176($context) # restore context->Rdi
- mov 40($disp),%rdi # disp->ContextRecord
- mov $context,%rsi
- mov \$`1232/8`,%ecx
- .long 0xa548f3fc # cld; rep movsq
-
- mov $disp,%rsi
- xor %rcx,%rcx # arg1, UNW_FLAG_NHANDLER
- mov 8(%rsi),%rdx # arg2, disp->ImageBase
- mov 0(%rsi),%r8 # arg3, disp->ControlPc
- mov 16(%rsi),%r9 # arg4, disp->FunctionEntry
- mov 40(%rsi),%r10 # disp->ContextRecord
- lea 56(%rsi),%r11 # &disp->HandlerData
- lea 24(%rsi),%r12 # &disp->EstablisherFrame
- mov %r10,32(%rsp) # arg5
- mov %r11,40(%rsp) # arg6
- mov %r12,48(%rsp) # arg7
- mov %rcx,56(%rsp) # arg8, (NULL)
- call *__imp_RtlVirtualUnwind(%rip)
-
- mov \$1,%eax # ExceptionContinueSearch
- lea 72(%rsp),%rsp
- popfq
- pop %r15
- pop %r14
- pop %r13
- pop %rbp
- pop %rbx
- pop %rdi
- pop %rsi
- ret
+ jmp .Lcommon_seh_exit
.size common_se_handler,.-common_se_handler
.type cbc_se_handler,\@abi-omnipotent
@@ -1006,6 +978,9 @@ cbc_se_handler:
mov %rsi,168($context) # restore context->Rsi
mov %rdi,176($context) # restore context->Rdi
+.align 4
+.Lcommon_seh_exit:
+
mov 40($disp),%rdi # disp->ContextRecord
mov $context,%rsi # context
mov \$`1232/8`,%ecx # sizeof(CONTEXT)