First pass at removing win64 support from the assembly generating Perl
authorjsing <jsing@openbsd.org>
Wed, 30 Apr 2014 13:40:02 +0000 (13:40 +0000)
committerjsing <jsing@openbsd.org>
Wed, 30 Apr 2014 13:40:02 +0000 (13:40 +0000)
scripts. We certainly do not need an identical copy of the win64
exception handler in each script (surely one copy would be sufficient).

ok miod@

16 files changed:
lib/libcrypto/bn/asm/modexp512-x86_64.pl
lib/libcrypto/bn/asm/x86_64-mont.pl
lib/libcrypto/camellia/asm/cmll-x86_64.pl
lib/libcrypto/md5/asm/md5-x86_64.pl
lib/libcrypto/rc4/asm/rc4-md5-x86_64.pl
lib/libcrypto/rc4/asm/rc4-x86_64.pl
lib/libcrypto/sha/asm/sha512-x86_64.pl
lib/libcrypto/whrlpool/asm/wp-x86_64.pl
lib/libssl/src/crypto/bn/asm/modexp512-x86_64.pl
lib/libssl/src/crypto/bn/asm/x86_64-mont.pl
lib/libssl/src/crypto/camellia/asm/cmll-x86_64.pl
lib/libssl/src/crypto/md5/asm/md5-x86_64.pl
lib/libssl/src/crypto/rc4/asm/rc4-md5-x86_64.pl
lib/libssl/src/crypto/rc4/asm/rc4-x86_64.pl
lib/libssl/src/crypto/sha/asm/sha512-x86_64.pl
lib/libssl/src/crypto/whrlpool/asm/wp-x86_64.pl

index bfd6e97..4317282 100644 (file)
@@ -61,8 +61,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -1374,113 +1372,6 @@ end_main_loop_a3b:
 .size mod_exp_512, . - mod_exp_512
 ___
 
-if ($win64) {
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-my $rec="%rcx";
-my $frame="%rdx";
-my $context="%r8";
-my $disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  mod_exp_512_se_handler,\@abi-omnipotent
-.align 16
-mod_exp_512_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lbody(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<prologue label
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lin_prologue
-
-       mov     $rsp_offset(%rax),%rax  # pull saved Rsp
-
-       mov     32(%rax),%rbx
-       mov     40(%rax),%rbp
-       mov     24(%rax),%r12
-       mov     16(%rax),%r13
-       mov     8(%rax),%r14
-       mov     0(%rax),%r15
-       lea     48(%rax),%rax
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  mod_exp_512_se_handler,.-mod_exp_512_se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_mod_exp_512
-       .rva    .LSEH_end_mod_exp_512
-       .rva    .LSEH_info_mod_exp_512
-
-.section       .xdata
-.align 8
-.LSEH_info_mod_exp_512:
-       .byte   9,0,0,0
-       .rva    mod_exp_512_se_handler
-___
-}
-
 sub reg_part {
 my ($reg,$conv)=@_;
     if ($reg =~ /%r[0-9]+/)    { $reg .= $conv; }
index 17fb94c..90c717f 100755 (executable)
@@ -33,8 +33,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -1502,180 +1500,5 @@ $code.=<<___;
 .align 16
 ___
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  mul_handler,\@abi-omnipotent
-.align 16
-mul_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       mov     8($disp),%rsi           # disp->ImageBase
-       mov     56($disp),%r11          # disp->HandlerData
-
-       mov     0(%r11),%r10d           # HandlerData[0]
-       lea     (%rsi,%r10),%r10        # end of prologue label
-       cmp     %r10,%rbx               # context->Rip<end of prologue label
-       jb      .Lcommon_seh_tail
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       mov     4(%r11),%r10d           # HandlerData[1]
-       lea     (%rsi,%r10),%r10        # epilogue label
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lcommon_seh_tail
-
-       mov     192($context),%r10      # pull $num
-       mov     8(%rax,%r10,8),%rax     # pull saved stack pointer
-       lea     48(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-       jmp     .Lcommon_seh_tail
-.size  mul_handler,.-mul_handler
-
-.type  sqr_handler,\@abi-omnipotent
-.align 16
-sqr_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lsqr4x_body(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lsqr_body
-       jb      .Lcommon_seh_tail
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lsqr4x_epilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lsqr_epilogue
-       jae     .Lcommon_seh_tail
-
-       mov     56(%rax),%rax           # pull saved stack pointer
-       lea     48(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lcommon_seh_tail:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  sqr_handler,.-sqr_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_bn_mul_mont
-       .rva    .LSEH_end_bn_mul_mont
-       .rva    .LSEH_info_bn_mul_mont
-
-       .rva    .LSEH_begin_bn_mul4x_mont
-       .rva    .LSEH_end_bn_mul4x_mont
-       .rva    .LSEH_info_bn_mul4x_mont
-
-       .rva    .LSEH_begin_bn_sqr4x_mont
-       .rva    .LSEH_end_bn_sqr4x_mont
-       .rva    .LSEH_info_bn_sqr4x_mont
-
-.section       .xdata
-.align 8
-.LSEH_info_bn_mul_mont:
-       .byte   9,0,0,0
-       .rva    mul_handler
-       .rva    .Lmul_body,.Lmul_epilogue       # HandlerData[]
-.LSEH_info_bn_mul4x_mont:
-       .byte   9,0,0,0
-       .rva    mul_handler
-       .rva    .Lmul4x_body,.Lmul4x_epilogue   # HandlerData[]
-.LSEH_info_bn_sqr4x_mont:
-       .byte   9,0,0,0
-       .rva    sqr_handler
-___
-}
-
 print $code;
 close STDOUT;
index 9f4b82f..a171c65 100644 (file)
@@ -33,8 +33,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -57,7 +55,7 @@ $inp="%r12";
 $out="%r13";
 $key="%r14";
 $keyend="%r15";
-$arg0d=$win64?"%ecx":"%edi";
+$arg0d="%edi";
 
 # const unsigned int Camellia_SBOX[4][256];
 # Well, sort of... Camellia_SBOX[0][] is interleaved with [1][],
@@ -864,218 +862,6 @@ Camellia_cbc_encrypt:
 ___
 }
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  common_se_handler,\@abi-omnipotent
-.align 16
-common_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       lea     -64(%rsp),%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       mov     8($disp),%rsi           # disp->ImageBase
-       mov     56($disp),%r11          # disp->HandlerData
-
-       mov     0(%r11),%r10d           # HandlerData[0]
-       lea     (%rsi,%r10),%r10        # prologue label
-       cmp     %r10,%rbx               # context->Rip<prologue label
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       mov     4(%r11),%r10d           # HandlerData[1]
-       lea     (%rsi,%r10),%r10        # epilogue label
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lin_prologue
-
-       lea     40(%rax),%rax
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r13
-       mov     -32(%rax),%r14
-       mov     -40(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       jmp     .Lcommon_seh_exit
-.size  common_se_handler,.-common_se_handler
-
-.type  cbc_se_handler,\@abi-omnipotent
-.align 16
-cbc_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       lea     -64(%rsp),%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lcbc_prologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_prologue
-       jb      .Lin_cbc_prologue
-
-       lea     .Lcbc_body(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_body
-       jb      .Lin_cbc_frame_setup
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lcbc_abort(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lcbc_abort
-       jae     .Lin_cbc_prologue
-
-       # handle pushf/popf in Camellia_cbc_encrypt
-       lea     .Lcbc_enc_pushf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<=.Lcbc_enc_pushf
-       jbe     .Lin_cbc_no_flag
-       lea     8(%rax),%rax
-       lea     .Lcbc_enc_popf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_enc_popf
-       jb      .Lin_cbc_no_flag
-       lea     -8(%rax),%rax
-       lea     .Lcbc_dec_pushf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<=.Lcbc_dec_pushf
-       jbe     .Lin_cbc_no_flag
-       lea     8(%rax),%rax
-       lea     .Lcbc_dec_popf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_dec_popf
-       jb      .Lin_cbc_no_flag
-       lea     -8(%rax),%rax
-
-.Lin_cbc_no_flag:
-       mov     48(%rax),%rax           # $_rsp
-       lea     48(%rax),%rax
-
-.Lin_cbc_frame_setup:
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_cbc_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       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)
-       .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     64(%rsp),%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  cbc_se_handler,.-cbc_se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_Camellia_EncryptBlock_Rounds
-       .rva    .LSEH_end_Camellia_EncryptBlock_Rounds
-       .rva    .LSEH_info_Camellia_EncryptBlock_Rounds
-
-       .rva    .LSEH_begin_Camellia_DecryptBlock_Rounds
-       .rva    .LSEH_end_Camellia_DecryptBlock_Rounds
-       .rva    .LSEH_info_Camellia_DecryptBlock_Rounds
-
-       .rva    .LSEH_begin_Camellia_Ekeygen
-       .rva    .LSEH_end_Camellia_Ekeygen
-       .rva    .LSEH_info_Camellia_Ekeygen
-
-       .rva    .LSEH_begin_Camellia_cbc_encrypt
-       .rva    .LSEH_end_Camellia_cbc_encrypt
-       .rva    .LSEH_info_Camellia_cbc_encrypt
-
-.section       .xdata
-.align 8
-.LSEH_info_Camellia_EncryptBlock_Rounds:
-       .byte   9,0,0,0
-       .rva    common_se_handler
-       .rva    .Lenc_prologue,.Lenc_epilogue   # HandlerData[]
-.LSEH_info_Camellia_DecryptBlock_Rounds:
-       .byte   9,0,0,0
-       .rva    common_se_handler
-       .rva    .Ldec_prologue,.Ldec_epilogue   # HandlerData[]
-.LSEH_info_Camellia_Ekeygen:
-       .byte   9,0,0,0
-       .rva    common_se_handler
-       .rva    .Lkey_prologue,.Lkey_epilogue   # HandlerData[]
-.LSEH_info_Camellia_cbc_encrypt:
-       .byte   9,0,0,0
-       .rva    cbc_se_handler
-___
-}
-
 $code =~ s/\`([^\`]*)\`/eval $1/gem;
 print $code;
 close STDOUT;
index f11224d..c902a1b 100755 (executable)
@@ -112,8 +112,6 @@ my $flavour = shift;
 my $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -261,110 +259,6 @@ $code .= <<EOF;
 .size md5_block_asm_data_order,.-md5_block_asm_data_order
 EOF
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-my $rec="%rcx";
-my $frame="%rdx";
-my $context="%r8";
-my $disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lprologue
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       jae     .Lin_prologue
-
-       lea     40(%rax),%rax
-
-       mov     -8(%rax),%rbp
-       mov     -16(%rax),%rbx
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r14
-       mov     -40(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_md5_block_asm_data_order
-       .rva    .LSEH_end_md5_block_asm_data_order
-       .rva    .LSEH_info_md5_block_asm_data_order
-
-.section       .xdata
-.align 8
-.LSEH_info_md5_block_asm_data_order:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
-
 print $code;
 
 close STDOUT;
index 272fa91..501d9e9 100644 (file)
@@ -44,8 +44,6 @@ my $flavour = shift;
 my $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -505,111 +503,6 @@ RC4_options:
 .size  RC4_options,.-RC4_options
 ___
 }
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-my $rec="%rcx";
-my $frame="%rdx";
-my $context="%r8";
-my $disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lbody(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lbody
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       jae     .Lin_prologue
-
-       mov     40(%rax),%r15
-       mov     48(%rax),%r14
-       mov     56(%rax),%r13
-       mov     64(%rax),%r12
-       mov     72(%rax),%rbp
-       mov     80(%rax),%rbx
-       lea     88(%rax),%rax
-
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R12
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_$func
-       .rva    .LSEH_end_$func
-       .rva    .LSEH_info_$func
-
-.section       .xdata
-.align 8
-.LSEH_info_$func:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
 
 sub reg_part {
 my ($reg,$conv)=@_;
index 75750db..2bed1e2 100755 (executable)
@@ -105,8 +105,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -528,138 +526,6 @@ RC4_options:
 .size  RC4_options,.-RC4_options
 ___
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  stream_se_handler,\@abi-omnipotent
-.align 16
-stream_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<prologue label
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lin_prologue
-
-       lea     24(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%r12
-       mov     -24(%rax),%r13
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       jmp     .Lcommon_seh_exit
-.size  stream_se_handler,.-stream_se_handler
-
-.type  key_se_handler,\@abi-omnipotent
-.align 16
-key_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     152($context),%rax      # pull context->Rsp
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-.Lcommon_seh_exit:
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  key_se_handler,.-key_se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_RC4
-       .rva    .LSEH_end_RC4
-       .rva    .LSEH_info_RC4
-
-       .rva    .LSEH_begin_private_RC4_set_key
-       .rva    .LSEH_end_private_RC4_set_key
-       .rva    .LSEH_info_private_RC4_set_key
-
-.section       .xdata
-.align 8
-.LSEH_info_RC4:
-       .byte   9,0,0,0
-       .rva    stream_se_handler
-.LSEH_info_private_RC4_set_key:
-       .byte   9,0,0,0
-       .rva    key_se_handler
-___
-}
-
 sub reg_part {
 my ($reg,$conv)=@_;
     if ($reg =~ /%r[0-9]+/)    { $reg .= $conv; }
index 8d51678..feb0f9e 100755 (executable)
@@ -44,8 +44,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -339,113 +337,6 @@ $TABLE:
 ___
 }
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lprologue
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       jae     .Lin_prologue
-
-       mov     16*$SZ+3*8(%rax),%rax   # pull $_rsp
-       lea     48(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_$func
-       .rva    .LSEH_end_$func
-       .rva    .LSEH_info_$func
-
-.section       .xdata
-.align 8
-.LSEH_info_$func:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
-
 $code =~ s/\`([^\`]*)\`/eval $1/gem;
 print $code;
 close STDOUT;
index 24b2ff6..afadd5d 100644 (file)
@@ -34,8 +34,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -478,113 +476,6 @@ ___
        &L(0xfb,0xee,0x7c,0x66,0xdd,0x17,0x47,0x9e);
        &L(0xca,0x2d,0xbf,0x07,0xad,0x5a,0x83,0x33);
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lprologue
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       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     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_$func
-       .rva    .LSEH_end_$func
-       .rva    .LSEH_info_$func
-
-.section       .xdata
-.align 8
-.LSEH_info_$func:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
-
 $code =~ s/\`([^\`]*)\`/eval $1/gem;
 print $code;
 close STDOUT;
index bfd6e97..4317282 100644 (file)
@@ -61,8 +61,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -1374,113 +1372,6 @@ end_main_loop_a3b:
 .size mod_exp_512, . - mod_exp_512
 ___
 
-if ($win64) {
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-my $rec="%rcx";
-my $frame="%rdx";
-my $context="%r8";
-my $disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  mod_exp_512_se_handler,\@abi-omnipotent
-.align 16
-mod_exp_512_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lbody(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<prologue label
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lin_prologue
-
-       mov     $rsp_offset(%rax),%rax  # pull saved Rsp
-
-       mov     32(%rax),%rbx
-       mov     40(%rax),%rbp
-       mov     24(%rax),%r12
-       mov     16(%rax),%r13
-       mov     8(%rax),%r14
-       mov     0(%rax),%r15
-       lea     48(%rax),%rax
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  mod_exp_512_se_handler,.-mod_exp_512_se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_mod_exp_512
-       .rva    .LSEH_end_mod_exp_512
-       .rva    .LSEH_info_mod_exp_512
-
-.section       .xdata
-.align 8
-.LSEH_info_mod_exp_512:
-       .byte   9,0,0,0
-       .rva    mod_exp_512_se_handler
-___
-}
-
 sub reg_part {
 my ($reg,$conv)=@_;
     if ($reg =~ /%r[0-9]+/)    { $reg .= $conv; }
index 17fb94c..90c717f 100755 (executable)
@@ -33,8 +33,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -1502,180 +1500,5 @@ $code.=<<___;
 .align 16
 ___
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  mul_handler,\@abi-omnipotent
-.align 16
-mul_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       mov     8($disp),%rsi           # disp->ImageBase
-       mov     56($disp),%r11          # disp->HandlerData
-
-       mov     0(%r11),%r10d           # HandlerData[0]
-       lea     (%rsi,%r10),%r10        # end of prologue label
-       cmp     %r10,%rbx               # context->Rip<end of prologue label
-       jb      .Lcommon_seh_tail
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       mov     4(%r11),%r10d           # HandlerData[1]
-       lea     (%rsi,%r10),%r10        # epilogue label
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lcommon_seh_tail
-
-       mov     192($context),%r10      # pull $num
-       mov     8(%rax,%r10,8),%rax     # pull saved stack pointer
-       lea     48(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-       jmp     .Lcommon_seh_tail
-.size  mul_handler,.-mul_handler
-
-.type  sqr_handler,\@abi-omnipotent
-.align 16
-sqr_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lsqr4x_body(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lsqr_body
-       jb      .Lcommon_seh_tail
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lsqr4x_epilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lsqr_epilogue
-       jae     .Lcommon_seh_tail
-
-       mov     56(%rax),%rax           # pull saved stack pointer
-       lea     48(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lcommon_seh_tail:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  sqr_handler,.-sqr_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_bn_mul_mont
-       .rva    .LSEH_end_bn_mul_mont
-       .rva    .LSEH_info_bn_mul_mont
-
-       .rva    .LSEH_begin_bn_mul4x_mont
-       .rva    .LSEH_end_bn_mul4x_mont
-       .rva    .LSEH_info_bn_mul4x_mont
-
-       .rva    .LSEH_begin_bn_sqr4x_mont
-       .rva    .LSEH_end_bn_sqr4x_mont
-       .rva    .LSEH_info_bn_sqr4x_mont
-
-.section       .xdata
-.align 8
-.LSEH_info_bn_mul_mont:
-       .byte   9,0,0,0
-       .rva    mul_handler
-       .rva    .Lmul_body,.Lmul_epilogue       # HandlerData[]
-.LSEH_info_bn_mul4x_mont:
-       .byte   9,0,0,0
-       .rva    mul_handler
-       .rva    .Lmul4x_body,.Lmul4x_epilogue   # HandlerData[]
-.LSEH_info_bn_sqr4x_mont:
-       .byte   9,0,0,0
-       .rva    sqr_handler
-___
-}
-
 print $code;
 close STDOUT;
index 9f4b82f..a171c65 100644 (file)
@@ -33,8 +33,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -57,7 +55,7 @@ $inp="%r12";
 $out="%r13";
 $key="%r14";
 $keyend="%r15";
-$arg0d=$win64?"%ecx":"%edi";
+$arg0d="%edi";
 
 # const unsigned int Camellia_SBOX[4][256];
 # Well, sort of... Camellia_SBOX[0][] is interleaved with [1][],
@@ -864,218 +862,6 @@ Camellia_cbc_encrypt:
 ___
 }
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  common_se_handler,\@abi-omnipotent
-.align 16
-common_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       lea     -64(%rsp),%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       mov     8($disp),%rsi           # disp->ImageBase
-       mov     56($disp),%r11          # disp->HandlerData
-
-       mov     0(%r11),%r10d           # HandlerData[0]
-       lea     (%rsi,%r10),%r10        # prologue label
-       cmp     %r10,%rbx               # context->Rip<prologue label
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       mov     4(%r11),%r10d           # HandlerData[1]
-       lea     (%rsi,%r10),%r10        # epilogue label
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lin_prologue
-
-       lea     40(%rax),%rax
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r13
-       mov     -32(%rax),%r14
-       mov     -40(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       jmp     .Lcommon_seh_exit
-.size  common_se_handler,.-common_se_handler
-
-.type  cbc_se_handler,\@abi-omnipotent
-.align 16
-cbc_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       lea     -64(%rsp),%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lcbc_prologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_prologue
-       jb      .Lin_cbc_prologue
-
-       lea     .Lcbc_body(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_body
-       jb      .Lin_cbc_frame_setup
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lcbc_abort(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lcbc_abort
-       jae     .Lin_cbc_prologue
-
-       # handle pushf/popf in Camellia_cbc_encrypt
-       lea     .Lcbc_enc_pushf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<=.Lcbc_enc_pushf
-       jbe     .Lin_cbc_no_flag
-       lea     8(%rax),%rax
-       lea     .Lcbc_enc_popf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_enc_popf
-       jb      .Lin_cbc_no_flag
-       lea     -8(%rax),%rax
-       lea     .Lcbc_dec_pushf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<=.Lcbc_dec_pushf
-       jbe     .Lin_cbc_no_flag
-       lea     8(%rax),%rax
-       lea     .Lcbc_dec_popf(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lcbc_dec_popf
-       jb      .Lin_cbc_no_flag
-       lea     -8(%rax),%rax
-
-.Lin_cbc_no_flag:
-       mov     48(%rax),%rax           # $_rsp
-       lea     48(%rax),%rax
-
-.Lin_cbc_frame_setup:
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_cbc_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       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)
-       .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     64(%rsp),%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  cbc_se_handler,.-cbc_se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_Camellia_EncryptBlock_Rounds
-       .rva    .LSEH_end_Camellia_EncryptBlock_Rounds
-       .rva    .LSEH_info_Camellia_EncryptBlock_Rounds
-
-       .rva    .LSEH_begin_Camellia_DecryptBlock_Rounds
-       .rva    .LSEH_end_Camellia_DecryptBlock_Rounds
-       .rva    .LSEH_info_Camellia_DecryptBlock_Rounds
-
-       .rva    .LSEH_begin_Camellia_Ekeygen
-       .rva    .LSEH_end_Camellia_Ekeygen
-       .rva    .LSEH_info_Camellia_Ekeygen
-
-       .rva    .LSEH_begin_Camellia_cbc_encrypt
-       .rva    .LSEH_end_Camellia_cbc_encrypt
-       .rva    .LSEH_info_Camellia_cbc_encrypt
-
-.section       .xdata
-.align 8
-.LSEH_info_Camellia_EncryptBlock_Rounds:
-       .byte   9,0,0,0
-       .rva    common_se_handler
-       .rva    .Lenc_prologue,.Lenc_epilogue   # HandlerData[]
-.LSEH_info_Camellia_DecryptBlock_Rounds:
-       .byte   9,0,0,0
-       .rva    common_se_handler
-       .rva    .Ldec_prologue,.Ldec_epilogue   # HandlerData[]
-.LSEH_info_Camellia_Ekeygen:
-       .byte   9,0,0,0
-       .rva    common_se_handler
-       .rva    .Lkey_prologue,.Lkey_epilogue   # HandlerData[]
-.LSEH_info_Camellia_cbc_encrypt:
-       .byte   9,0,0,0
-       .rva    cbc_se_handler
-___
-}
-
 $code =~ s/\`([^\`]*)\`/eval $1/gem;
 print $code;
 close STDOUT;
index f11224d..c902a1b 100755 (executable)
@@ -112,8 +112,6 @@ my $flavour = shift;
 my $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -261,110 +259,6 @@ $code .= <<EOF;
 .size md5_block_asm_data_order,.-md5_block_asm_data_order
 EOF
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-my $rec="%rcx";
-my $frame="%rdx";
-my $context="%r8";
-my $disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lprologue
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       jae     .Lin_prologue
-
-       lea     40(%rax),%rax
-
-       mov     -8(%rax),%rbp
-       mov     -16(%rax),%rbx
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r14
-       mov     -40(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_md5_block_asm_data_order
-       .rva    .LSEH_end_md5_block_asm_data_order
-       .rva    .LSEH_info_md5_block_asm_data_order
-
-.section       .xdata
-.align 8
-.LSEH_info_md5_block_asm_data_order:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
-
 print $code;
 
 close STDOUT;
index 272fa91..501d9e9 100644 (file)
@@ -44,8 +44,6 @@ my $flavour = shift;
 my $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -505,111 +503,6 @@ RC4_options:
 .size  RC4_options,.-RC4_options
 ___
 }
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-my $rec="%rcx";
-my $frame="%rdx";
-my $context="%r8";
-my $disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lbody(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lbody
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       jae     .Lin_prologue
-
-       mov     40(%rax),%r15
-       mov     48(%rax),%r14
-       mov     56(%rax),%r13
-       mov     64(%rax),%r12
-       mov     72(%rax),%rbp
-       mov     80(%rax),%rbx
-       lea     88(%rax),%rax
-
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R12
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_$func
-       .rva    .LSEH_end_$func
-       .rva    .LSEH_info_$func
-
-.section       .xdata
-.align 8
-.LSEH_info_$func:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
 
 sub reg_part {
 my ($reg,$conv)=@_;
index 75750db..2bed1e2 100755 (executable)
@@ -105,8 +105,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -528,138 +526,6 @@ RC4_options:
 .size  RC4_options,.-RC4_options
 ___
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  stream_se_handler,\@abi-omnipotent
-.align 16
-stream_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<prologue label
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=epilogue label
-       jae     .Lin_prologue
-
-       lea     24(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%r12
-       mov     -24(%rax),%r13
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       jmp     .Lcommon_seh_exit
-.size  stream_se_handler,.-stream_se_handler
-
-.type  key_se_handler,\@abi-omnipotent
-.align 16
-key_se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     152($context),%rax      # pull context->Rsp
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-.Lcommon_seh_exit:
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  key_se_handler,.-key_se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_RC4
-       .rva    .LSEH_end_RC4
-       .rva    .LSEH_info_RC4
-
-       .rva    .LSEH_begin_private_RC4_set_key
-       .rva    .LSEH_end_private_RC4_set_key
-       .rva    .LSEH_info_private_RC4_set_key
-
-.section       .xdata
-.align 8
-.LSEH_info_RC4:
-       .byte   9,0,0,0
-       .rva    stream_se_handler
-.LSEH_info_private_RC4_set_key:
-       .byte   9,0,0,0
-       .rva    key_se_handler
-___
-}
-
 sub reg_part {
 my ($reg,$conv)=@_;
     if ($reg =~ /%r[0-9]+/)    { $reg .= $conv; }
index 8d51678..feb0f9e 100755 (executable)
@@ -44,8 +44,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -339,113 +337,6 @@ $TABLE:
 ___
 }
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lprologue
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       jae     .Lin_prologue
-
-       mov     16*$SZ+3*8(%rax),%rax   # pull $_rsp
-       lea     48(%rax),%rax
-
-       mov     -8(%rax),%rbx
-       mov     -16(%rax),%rbp
-       mov     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_$func
-       .rva    .LSEH_end_$func
-       .rva    .LSEH_info_$func
-
-.section       .xdata
-.align 8
-.LSEH_info_$func:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
-
 $code =~ s/\`([^\`]*)\`/eval $1/gem;
 print $code;
 close STDOUT;
index 24b2ff6..afadd5d 100644 (file)
@@ -34,8 +34,6 @@ $flavour = shift;
 $output  = shift;
 if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
 
-$win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
-
 $0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
 ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
 ( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -478,113 +476,6 @@ ___
        &L(0xfb,0xee,0x7c,0x66,0xdd,0x17,0x47,0x9e);
        &L(0xca,0x2d,0xbf,0x07,0xad,0x5a,0x83,0x33);
 
-# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
-#              CONTEXT *context,DISPATCHER_CONTEXT *disp)
-if ($win64) {
-$rec="%rcx";
-$frame="%rdx";
-$context="%r8";
-$disp="%r9";
-
-$code.=<<___;
-.extern        __imp_RtlVirtualUnwind
-.type  se_handler,\@abi-omnipotent
-.align 16
-se_handler:
-       push    %rsi
-       push    %rdi
-       push    %rbx
-       push    %rbp
-       push    %r12
-       push    %r13
-       push    %r14
-       push    %r15
-       pushfq
-       sub     \$64,%rsp
-
-       mov     120($context),%rax      # pull context->Rax
-       mov     248($context),%rbx      # pull context->Rip
-
-       lea     .Lprologue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip<.Lprologue
-       jb      .Lin_prologue
-
-       mov     152($context),%rax      # pull context->Rsp
-
-       lea     .Lepilogue(%rip),%r10
-       cmp     %r10,%rbx               # context->Rip>=.Lepilogue
-       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     -24(%rax),%r12
-       mov     -32(%rax),%r13
-       mov     -40(%rax),%r14
-       mov     -48(%rax),%r15
-       mov     %rbx,144($context)      # restore context->Rbx
-       mov     %rbp,160($context)      # restore context->Rbp
-       mov     %r12,216($context)      # restore context->R12
-       mov     %r13,224($context)      # restore context->R13
-       mov     %r14,232($context)      # restore context->R14
-       mov     %r15,240($context)      # restore context->R15
-
-.Lin_prologue:
-       mov     8(%rax),%rdi
-       mov     16(%rax),%rsi
-       mov     %rax,152($context)      # restore context->Rsp
-       mov     %rsi,168($context)      # restore context->Rsi
-       mov     %rdi,176($context)      # restore context->Rdi
-
-       mov     40($disp),%rdi          # disp->ContextRecord
-       mov     $context,%rsi           # context
-       mov     \$154,%ecx              # sizeof(CONTEXT)
-       .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
-       add     \$64,%rsp
-       popfq
-       pop     %r15
-       pop     %r14
-       pop     %r13
-       pop     %r12
-       pop     %rbp
-       pop     %rbx
-       pop     %rdi
-       pop     %rsi
-       ret
-.size  se_handler,.-se_handler
-
-.section       .pdata
-.align 4
-       .rva    .LSEH_begin_$func
-       .rva    .LSEH_end_$func
-       .rva    .LSEH_info_$func
-
-.section       .xdata
-.align 8
-.LSEH_info_$func:
-       .byte   9,0,0,0
-       .rva    se_handler
-___
-}
-
 $code =~ s/\`([^\`]*)\`/eval $1/gem;
 print $code;
 close STDOUT;