summaryrefslogtreecommitdiff
path: root/crypto/amd64cpuid.pl
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/amd64cpuid.pl')
-rw-r--r--crypto/amd64cpuid.pl30
1 files changed, 30 insertions, 0 deletions
diff --git a/crypto/amd64cpuid.pl b/crypto/amd64cpuid.pl
new file mode 100644
index 0000000000..baf801d062
--- /dev/null
+++ b/crypto/amd64cpuid.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/env perl
+
+$output=shift;
+$win64a=1 if ($output =~ /win64a\.[s|asm]/);
+open STDOUT,">$output" || die "can't open $output: $!";
+
+print<<___ if(defined($win64a));
+TEXT SEGMENT
+PUBLIC OPENSSL_rdtsc
+ALIGN 16
+OPENSSL_rdtsc PROC NEAR
+ rdtsc
+ shl rdx,32
+ or rax,rdx
+ ret
+OPENSSL_rdtsc ENDP
+TEXT ENDS
+END
+___
+print<<___ if(!defined($win64a));
+.text
+.globl OPENSSL_rdtsc
+.align 16
+OPENSSL_rdtsc:
+ rdtsc
+ shl \$32,%rdx
+ or %rdx,%rax
+ ret
+.size OPENSSL_rdtsc,.-OPENSSL_rdtsc
+___