diff options
author | jsing <> | 2014-04-30 13:40:02 +0000 |
---|---|---|
committer | jsing <> | 2014-04-30 13:40:02 +0000 |
commit | b8e088b53dabff9eeb33721c6fa4e60831bf9797 (patch) | |
tree | 75932b21b0fece851ece3d9ad0c80de6a9ff65e2 /src/lib/libcrypto/md5/asm | |
parent | 11a8133c7b915dcd4af9f7cf1c70b1179eeddf14 (diff) | |
download | openbsd-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-x | src/lib/libcrypto/md5/asm/md5-x86_64.pl | 106 |
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; | |||
112 | my $output = shift; | 112 | my $output = shift; |
113 | if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } | 113 | if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } |
114 | 114 | ||
115 | my $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 |
262 | EOF | 260 | EOF |
263 | 261 | ||
264 | # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, | ||
265 | # CONTEXT *context,DISPATCHER_CONTEXT *disp) | ||
266 | if ($win64) { | ||
267 | my $rec="%rcx"; | ||
268 | my $frame="%rdx"; | ||
269 | my $context="%r8"; | ||
270 | my $disp="%r9"; | ||
271 | |||
272 | $code.=<<___; | ||
273 | .extern __imp_RtlVirtualUnwind | ||
274 | .type se_handler,\@abi-omnipotent | ||
275 | .align 16 | ||
276 | se_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 | |||
368 | print $code; | 262 | print $code; |
369 | 263 | ||
370 | close STDOUT; | 264 | close STDOUT; |