diff options
| author | jsing <> | 2024-10-18 13:38:23 +0000 |
|---|---|---|
| committer | jsing <> | 2024-10-18 13:38:23 +0000 |
| commit | 9cd06dad2876e930336a0ea79cab57f476e39cf8 (patch) | |
| tree | e25ddd97df83b23b3087cc2435c7965bf43206a4 /src | |
| parent | 8ca2cf944a22a441df7aea76d387ae44564b6b72 (diff) | |
| download | openbsd-9cd06dad2876e930336a0ea79cab57f476e39cf8.tar.gz openbsd-9cd06dad2876e930336a0ea79cab57f476e39cf8.tar.bz2 openbsd-9cd06dad2876e930336a0ea79cab57f476e39cf8.zip | |
Remove now unused x86_64cpuid.pl.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/x86_64cpuid.pl | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/src/lib/libcrypto/x86_64cpuid.pl b/src/lib/libcrypto/x86_64cpuid.pl deleted file mode 100644 index a735a97f60..0000000000 --- a/src/lib/libcrypto/x86_64cpuid.pl +++ /dev/null | |||
| @@ -1,147 +0,0 @@ | |||
| 1 | #!/usr/bin/env perl | ||
| 2 | |||
| 3 | $flavour = shift; | ||
| 4 | $output = shift; | ||
| 5 | if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } | ||
| 6 | |||
| 7 | $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; | ||
| 8 | ( $xlate="${dir}x86_64-xlate.pl" and -f $xlate ) or | ||
| 9 | ( $xlate="${dir}perlasm/x86_64-xlate.pl" and -f $xlate) or | ||
| 10 | die "can't locate x86_64-xlate.pl"; | ||
| 11 | |||
| 12 | open OUT,"| \"$^X\" $xlate $flavour $output"; | ||
| 13 | *STDOUT=*OUT; | ||
| 14 | |||
| 15 | ($arg1,$arg2,$arg3,$arg4)=("%rdi","%rsi","%rdx","%rcx"); # Unix order | ||
| 16 | |||
| 17 | print<<___; | ||
| 18 | .text | ||
| 19 | .globl OPENSSL_ia32_cpuid | ||
| 20 | .type OPENSSL_ia32_cpuid,\@abi-omnipotent | ||
| 21 | .align 16 | ||
| 22 | OPENSSL_ia32_cpuid: | ||
| 23 | _CET_ENDBR | ||
| 24 | mov %rbx,%r8 # save %rbx | ||
| 25 | |||
| 26 | xor %eax,%eax | ||
| 27 | cpuid | ||
| 28 | mov %eax,%r11d # max value for standard query level | ||
| 29 | |||
| 30 | xor %eax,%eax | ||
| 31 | cmp \$0x756e6547,%ebx # "Genu" | ||
| 32 | setne %al | ||
| 33 | mov %eax,%r9d | ||
| 34 | cmp \$0x49656e69,%edx # "ineI" | ||
| 35 | setne %al | ||
| 36 | or %eax,%r9d | ||
| 37 | cmp \$0x6c65746e,%ecx # "ntel" | ||
| 38 | setne %al | ||
| 39 | or %eax,%r9d # 0 indicates Intel CPU | ||
| 40 | jz .Lintel | ||
| 41 | |||
| 42 | cmp \$0x68747541,%ebx # "Auth" | ||
| 43 | setne %al | ||
| 44 | mov %eax,%r10d | ||
| 45 | cmp \$0x69746E65,%edx # "enti" | ||
| 46 | setne %al | ||
| 47 | or %eax,%r10d | ||
| 48 | cmp \$0x444D4163,%ecx # "cAMD" | ||
| 49 | setne %al | ||
| 50 | or %eax,%r10d # 0 indicates AMD CPU | ||
| 51 | jnz .Lintel | ||
| 52 | |||
| 53 | # AMD specific | ||
| 54 | mov \$0x80000000,%eax | ||
| 55 | cpuid | ||
| 56 | cmp \$0x80000001,%eax | ||
| 57 | jb .Lintel | ||
| 58 | mov %eax,%r10d | ||
| 59 | mov \$0x80000001,%eax | ||
| 60 | cpuid | ||
| 61 | or %ecx,%r9d | ||
| 62 | and \$IA32CAP_MASK1_AMD_XOP,%r9d # isolate AMD XOP bit | ||
| 63 | or \$1,%r9d # make sure %r9d is not zero | ||
| 64 | |||
| 65 | cmp \$0x80000008,%r10d | ||
| 66 | jb .Lintel | ||
| 67 | |||
| 68 | mov \$0x80000008,%eax | ||
| 69 | cpuid | ||
| 70 | movzb %cl,%r10 # number of cores - 1 | ||
| 71 | inc %r10 # number of cores | ||
| 72 | |||
| 73 | mov \$1,%eax | ||
| 74 | cpuid | ||
| 75 | bt \$IA32CAP_BIT0_HT,%edx # test hyper-threading bit | ||
| 76 | jnc .Lgeneric | ||
| 77 | shr \$16,%ebx # number of logical processors | ||
| 78 | cmp %r10b,%bl | ||
| 79 | ja .Lgeneric | ||
| 80 | xor \$IA32CAP_MASK0_HT,%edx | ||
| 81 | jmp .Lgeneric | ||
| 82 | |||
| 83 | .Lintel: | ||
| 84 | cmp \$4,%r11d | ||
| 85 | mov \$-1,%r10d | ||
| 86 | jb .Lnocacheinfo | ||
| 87 | |||
| 88 | mov \$4,%eax | ||
| 89 | mov \$0,%ecx # query L1D | ||
| 90 | cpuid | ||
| 91 | mov %eax,%r10d | ||
| 92 | shr \$14,%r10d | ||
| 93 | and \$0xfff,%r10d # number of cores -1 per L1D | ||
| 94 | |||
| 95 | .Lnocacheinfo: | ||
| 96 | mov \$1,%eax | ||
| 97 | cpuid | ||
| 98 | # force reserved bits to 0 | ||
| 99 | and \$(~(IA32CAP_MASK0_INTELP4 | IA32CAP_MASK0_INTEL)),%edx | ||
| 100 | cmp \$0,%r9d | ||
| 101 | jne .Lnotintel | ||
| 102 | # set reserved bit#30 on Intel CPUs | ||
| 103 | or \$IA32CAP_MASK0_INTEL,%edx | ||
| 104 | and \$15,%ah | ||
| 105 | cmp \$15,%ah # examine Family ID | ||
| 106 | jne .Lnotintel | ||
| 107 | # set reserved bit#20 to engage RC4_CHAR | ||
| 108 | or \$IA32CAP_MASK0_INTELP4,%edx | ||
| 109 | .Lnotintel: | ||
| 110 | bt \$IA32CAP_BIT0_HT,%edx # test hyper-threading bit | ||
| 111 | jnc .Lgeneric | ||
| 112 | xor \$IA32CAP_MASK0_HT,%edx | ||
| 113 | cmp \$0,%r10d | ||
| 114 | je .Lgeneric | ||
| 115 | |||
| 116 | or \$IA32CAP_MASK0_HT,%edx | ||
| 117 | shr \$16,%ebx | ||
| 118 | cmp \$1,%bl # see if cache is shared | ||
| 119 | ja .Lgeneric | ||
| 120 | xor \$IA32CAP_MASK0_HT,%edx # clear hyper-threading bit if not | ||
| 121 | |||
| 122 | .Lgeneric: | ||
| 123 | and \$IA32CAP_MASK1_AMD_XOP,%r9d # isolate AMD XOP flag | ||
| 124 | and \$(~IA32CAP_MASK1_AMD_XOP),%ecx | ||
| 125 | or %ecx,%r9d # merge AMD XOP flag | ||
| 126 | |||
| 127 | mov %edx,%r10d # %r9d:%r10d is copy of %ecx:%edx | ||
| 128 | bt \$IA32CAP_BIT1_OSXSAVE,%r9d # check OSXSAVE bit | ||
| 129 | jnc .Lclear_avx | ||
| 130 | xor %ecx,%ecx # XCR0 | ||
| 131 | .byte 0x0f,0x01,0xd0 # xgetbv | ||
| 132 | and \$6,%eax # isolate XMM and YMM state support | ||
| 133 | cmp \$6,%eax | ||
| 134 | je .Ldone | ||
| 135 | .Lclear_avx: | ||
| 136 | mov \$(~(IA32CAP_MASK1_AVX | IA32CAP_MASK1_FMA3 | IA32CAP_MASK1_AMD_XOP)),%eax | ||
| 137 | and %eax,%r9d # clear AVX, FMA and AMD XOP bits | ||
| 138 | .Ldone: | ||
| 139 | shl \$32,%r9 | ||
| 140 | mov %r10d,%eax | ||
| 141 | mov %r8,%rbx # restore %rbx | ||
| 142 | or %r9,%rax | ||
| 143 | ret | ||
| 144 | .size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid | ||
| 145 | ___ | ||
| 146 | |||
| 147 | close STDOUT; # flush | ||
