4 $win64a=1 if ($output =~ /win64a\.[s|asm]/);
5 open STDOUT,">$output" || die "can't open $output: $!";
7 print<<___ if(defined($win64a));
18 PUBLIC OPENSSL_atomic_add
20 OPENSSL_atomic_add PROC
21 mov eax,DWORD PTR[rcx]
22 \$Lspin: lea r8,DWORD PTR[rdx+rax]
23 lock cmpxchg DWORD PTR[rcx],r8d
28 OPENSSL_atomic_add ENDP
30 PUBLIC OPENSSL_wipe_cpu
45 lea rax,QWORD PTR[rsp+8]
49 OPENSSL_ia32_cpuid PROC
58 OPENSSL_ia32_cpuid ENDP
62 EXTRN OPENSSL_cpuid_setup:PROC
63 DQ OPENSSL_cpuid_setup
67 print<<___ if(!defined($win64a));
76 .size OPENSSL_rdtsc,.-OPENSSL_rdtsc
78 .globl OPENSSL_atomic_add
79 .type OPENSSL_atomic_add,\@function
83 .Lspin: leaq (%rsi,%rax),%r8
84 lock; cmpxchgl %r8d,(%rdi)
89 .size OPENSSL_atomic_add,.-OPENSSL_atomic_add
91 .globl OPENSSL_wipe_cpu
92 .type OPENSSL_wipe_cpu,\@function
121 .size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
123 .globl OPENSSL_ia32_cpuid
134 .size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
137 call OPENSSL_cpuid_setup