summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/md5/asm
diff options
context:
space:
mode:
authorjsing <>2014-04-30 13:40:02 +0000
committerjsing <>2014-04-30 13:40:02 +0000
commitb8e088b53dabff9eeb33721c6fa4e60831bf9797 (patch)
tree75932b21b0fece851ece3d9ad0c80de6a9ff65e2 /src/lib/libcrypto/md5/asm
parent11a8133c7b915dcd4af9f7cf1c70b1179eeddf14 (diff)
downloadopenbsd-b8e088b53dabff9eeb33721c6fa4e60831bf9797.tar.gz
openbsd-b8e088b53dabff9eeb33721c6fa4e60831bf9797.tar.bz2
openbsd-b8e088b53dabff9eeb33721c6fa4e60831bf9797.zip
First pass at removing win64 support from the assembly generating Perl
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@
Diffstat (limited to 'src/lib/libcrypto/md5/asm')
-rwxr-xr-xsrc/lib/libcrypto/md5/asm/md5-x86_64.pl106
1 files changed, 0 insertions, 106 deletions
diff --git a/src/lib/libcrypto/md5/asm/md5-x86_64.pl b/src/lib/libcrypto/md5/asm/md5-x86_64.pl
index f11224d172..c902a1b532 100755
--- a/src/lib/libcrypto/md5/asm/md5-x86_64.pl
+++ b/src/lib/libcrypto/md5/asm/md5-x86_64.pl
@@ -112,8 +112,6 @@ my $flavour = shift;
112my $output = shift; 112my $output = shift;
113if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } 113if ($flavour =~ /\./) { $output = $flavour; undef $flavour; }
114 114
115my $win64=0; $win64=1 if ($flavour =~ /[nm]asm|mingw64/ || $output =~ /\.asm$/);
116
117$0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate; 115$0 =~ m/(.*[\/\\])[^\/\\]+$/; my $dir=$1; my $xlate;
118( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or 116( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or
119( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or 117( $xlate="${dir}../../perlasm/x86_64-xlate.pl" and -f $xlate) or
@@ -261,110 +259,6 @@ $code .= <<EOF;
261.size md5_block_asm_data_order,.-md5_block_asm_data_order 259.size md5_block_asm_data_order,.-md5_block_asm_data_order
262EOF 260EOF
263 261
264# EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame,
265# CONTEXT *context,DISPATCHER_CONTEXT *disp)
266if ($win64) {
267my $rec="%rcx";
268my $frame="%rdx";
269my $context="%r8";
270my $disp="%r9";
271
272$code.=<<___;
273.extern __imp_RtlVirtualUnwind
274.type se_handler,\@abi-omnipotent
275.align 16
276se_handler:
277 push %rsi
278 push %rdi
279 push %rbx
280 push %rbp
281 push %r12
282 push %r13
283 push %r14
284 push %r15
285 pushfq
286 sub \$64,%rsp
287
288 mov 120($context),%rax # pull context->Rax
289 mov 248($context),%rbx # pull context->Rip
290
291 lea .Lprologue(%rip),%r10
292 cmp %r10,%rbx # context->Rip<.Lprologue
293 jb .Lin_prologue
294
295 mov 152($context),%rax # pull context->Rsp
296
297 lea .Lepilogue(%rip),%r10
298 cmp %r10,%rbx # context->Rip>=.Lepilogue
299 jae .Lin_prologue
300
301 lea 40(%rax),%rax
302
303 mov -8(%rax),%rbp
304 mov -16(%rax),%rbx
305 mov -24(%rax),%r12
306 mov -32(%rax),%r14
307 mov -40(%rax),%r15
308 mov %rbx,144($context) # restore context->Rbx
309 mov %rbp,160($context) # restore context->Rbp
310 mov %r12,216($context) # restore context->R12
311 mov %r14,232($context) # restore context->R14
312 mov %r15,240($context) # restore context->R15
313
314.Lin_prologue:
315 mov 8(%rax),%rdi
316 mov 16(%rax),%rsi
317 mov %rax,152($context) # restore context->Rsp
318 mov %rsi,168($context) # restore context->Rsi
319 mov %rdi,176($context) # restore context->Rdi
320
321 mov 40($disp),%rdi # disp->ContextRecord
322 mov $context,%rsi # context
323 mov \$154,%ecx # sizeof(CONTEXT)
324 .long 0xa548f3fc # cld; rep movsq
325
326 mov $disp,%rsi
327 xor %rcx,%rcx # arg1, UNW_FLAG_NHANDLER
328 mov 8(%rsi),%rdx # arg2, disp->ImageBase
329 mov 0(%rsi),%r8 # arg3, disp->ControlPc
330 mov 16(%rsi),%r9 # arg4, disp->FunctionEntry
331 mov 40(%rsi),%r10 # disp->ContextRecord
332 lea 56(%rsi),%r11 # &disp->HandlerData
333 lea 24(%rsi),%r12 # &disp->EstablisherFrame
334 mov %r10,32(%rsp) # arg5
335 mov %r11,40(%rsp) # arg6
336 mov %r12,48(%rsp) # arg7
337 mov %rcx,56(%rsp) # arg8, (NULL)
338 call *__imp_RtlVirtualUnwind(%rip)
339
340 mov \$1,%eax # ExceptionContinueSearch
341 add \$64,%rsp
342 popfq
343 pop %r15
344 pop %r14
345 pop %r13
346 pop %r12
347 pop %rbp
348 pop %rbx
349 pop %rdi
350 pop %rsi
351 ret
352.size se_handler,.-se_handler
353
354.section .pdata
355.align 4
356 .rva .LSEH_begin_md5_block_asm_data_order
357 .rva .LSEH_end_md5_block_asm_data_order
358 .rva .LSEH_info_md5_block_asm_data_order
359
360.section .xdata
361.align 8
362.LSEH_info_md5_block_asm_data_order:
363 .byte 9,0,0,0
364 .rva se_handler
365___
366}
367
368print $code; 262print $code;
369 263
370close STDOUT; 264close STDOUT;