diff options
author | appro <appro> | 2008-12-19 11:19:19 +0000 |
---|---|---|
committer | appro <appro> | 2008-12-19 11:19:19 +0000 |
commit | b1a4122fe5562df4ce7e6ad8bf7f9112e225e9df (patch) | |
tree | c420697a45e44467736390677767cff52a69fb17 /crypto/camellia | |
parent | deb5734c12b01746d316fc243c895a017a9fb6dd (diff) | |
download | openssl-b1a4122fe5562df4ce7e6ad8bf7f9112e225e9df.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.pl | 37 |
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 7d76c820d..199165f95 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) |