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
: lea
(%rsi,%rax),%r8
84 lock; cmpxchg
%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