VirtualBox

source: vbox/trunk/src/libs/openssl-1.1.1l/crypto/alphacpuid.pl@ 91977

最後變更 在這個檔案從91977是 91772,由 vboxsync 提交於 3 年 前

openssl-1.1.1l: Applied and adjusted our OpenSSL changes to 1.1.1l. bugref:10126

檔案大小: 3.9 KB
 
1#! /usr/bin/env perl
2# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
3#
4# Licensed under the OpenSSL license (the "License"). You may not use
5# this file except in compliance with the License. You can obtain a copy
6# in the file LICENSE in the source distribution or at
7# https://www.openssl.org/source/license.html
8
9
10$output = pop;
11open STDOUT,">$output";
12
13print <<'___';
14.text
15
16.set noat
17
18.globl OPENSSL_cpuid_setup
19.ent OPENSSL_cpuid_setup
20OPENSSL_cpuid_setup:
21 .frame $30,0,$26
22 .prologue 0
23 ret ($26)
24.end OPENSSL_cpuid_setup
25
26.globl OPENSSL_wipe_cpu
27.ent OPENSSL_wipe_cpu
28OPENSSL_wipe_cpu:
29 .frame $30,0,$26
30 .prologue 0
31 clr $1
32 clr $2
33 clr $3
34 clr $4
35 clr $5
36 clr $6
37 clr $7
38 clr $8
39 clr $16
40 clr $17
41 clr $18
42 clr $19
43 clr $20
44 clr $21
45 clr $22
46 clr $23
47 clr $24
48 clr $25
49 clr $27
50 clr $at
51 clr $29
52 fclr $f0
53 fclr $f1
54 fclr $f10
55 fclr $f11
56 fclr $f12
57 fclr $f13
58 fclr $f14
59 fclr $f15
60 fclr $f16
61 fclr $f17
62 fclr $f18
63 fclr $f19
64 fclr $f20
65 fclr $f21
66 fclr $f22
67 fclr $f23
68 fclr $f24
69 fclr $f25
70 fclr $f26
71 fclr $f27
72 fclr $f28
73 fclr $f29
74 fclr $f30
75 mov $sp,$0
76 ret ($26)
77.end OPENSSL_wipe_cpu
78
79.globl OPENSSL_atomic_add
80.ent OPENSSL_atomic_add
81OPENSSL_atomic_add:
82 .frame $30,0,$26
83 .prologue 0
841: ldl_l $0,0($16)
85 addl $0,$17,$1
86 stl_c $1,0($16)
87 beq $1,1b
88 addl $0,$17,$0
89 ret ($26)
90.end OPENSSL_atomic_add
91
92.globl OPENSSL_rdtsc
93.ent OPENSSL_rdtsc
94OPENSSL_rdtsc:
95 .frame $30,0,$26
96 .prologue 0
97 rpcc $0
98 ret ($26)
99.end OPENSSL_rdtsc
100
101.globl OPENSSL_cleanse
102.ent OPENSSL_cleanse
103OPENSSL_cleanse:
104 .frame $30,0,$26
105 .prologue 0
106 beq $17,.Ldone
107 and $16,7,$0
108 bic $17,7,$at
109 beq $at,.Little
110 beq $0,.Laligned
111
112.Little:
113 subq $0,8,$0
114 ldq_u $1,0($16)
115 mov $16,$2
116.Lalign:
117 mskbl $1,$16,$1
118 lda $16,1($16)
119 subq $17,1,$17
120 addq $0,1,$0
121 beq $17,.Lout
122 bne $0,.Lalign
123.Lout: stq_u $1,0($2)
124 beq $17,.Ldone
125 bic $17,7,$at
126 beq $at,.Little
127
128.Laligned:
129 stq $31,0($16)
130 subq $17,8,$17
131 lda $16,8($16)
132 bic $17,7,$at
133 bne $at,.Laligned
134 bne $17,.Little
135.Ldone: ret ($26)
136.end OPENSSL_cleanse
137
138.globl CRYPTO_memcmp
139.ent CRYPTO_memcmp
140CRYPTO_memcmp:
141 .frame $30,0,$26
142 .prologue 0
143 xor $0,$0,$0
144 beq $18,.Lno_data
145
146 xor $1,$1,$1
147 nop
148.Loop_cmp:
149 ldq_u $2,0($16)
150 subq $18,1,$18
151 ldq_u $3,0($17)
152 extbl $2,$16,$2
153 lda $16,1($16)
154 extbl $3,$17,$3
155 lda $17,1($17)
156 xor $3,$2,$2
157 or $2,$0,$0
158 bne $18,.Loop_cmp
159
160 subq $31,$0,$0
161 srl $0,63,$0
162.Lno_data:
163 ret ($26)
164.end CRYPTO_memcmp
165___
166{
167my ($out,$cnt,$max)=("\$16","\$17","\$18");
168my ($tick,$lasttick)=("\$19","\$20");
169my ($diff,$lastdiff)=("\$21","\$22");
170my ($v0,$ra,$sp,$zero)=("\$0","\$26","\$30","\$31");
171
172print <<___;
173.globl OPENSSL_instrument_bus
174.ent OPENSSL_instrument_bus
175OPENSSL_instrument_bus:
176 .frame $sp,0,$ra
177 .prologue 0
178 mov $cnt,$v0
179
180 rpcc $lasttick
181 mov 0,$diff
182
183 ecb ($out)
184 ldl_l $tick,0($out)
185 addl $diff,$tick,$tick
186 mov $tick,$diff
187 stl_c $tick,0($out)
188 stl $diff,0($out)
189
190.Loop: rpcc $tick
191 subq $tick,$lasttick,$diff
192 mov $tick,$lasttick
193
194 ecb ($out)
195 ldl_l $tick,0($out)
196 addl $diff,$tick,$tick
197 mov $tick,$diff
198 stl_c $tick,0($out)
199 stl $diff,0($out)
200
201 subl $cnt,1,$cnt
202 lda $out,4($out)
203 bne $cnt,.Loop
204
205 ret ($ra)
206.end OPENSSL_instrument_bus
207
208.globl OPENSSL_instrument_bus2
209.ent OPENSSL_instrument_bus2
210OPENSSL_instrument_bus2:
211 .frame $sp,0,$ra
212 .prologue 0
213 mov $cnt,$v0
214
215 rpcc $lasttick
216 mov 0,$diff
217
218 ecb ($out)
219 ldl_l $tick,0($out)
220 addl $diff,$tick,$tick
221 mov $tick,$diff
222 stl_c $tick,0($out)
223 stl $diff,0($out)
224
225 rpcc $tick
226 subq $tick,$lasttick,$diff
227 mov $tick,$lasttick
228 mov $diff,$lastdiff
229.Loop2:
230 ecb ($out)
231 ldl_l $tick,0($out)
232 addl $diff,$tick,$tick
233 mov $tick,$diff
234 stl_c $tick,0($out)
235 stl $diff,0($out)
236
237 subl $max,1,$max
238 beq $max,.Ldone2
239
240 rpcc $tick
241 subq $tick,$lasttick,$diff
242 mov $tick,$lasttick
243 subq $lastdiff,$diff,$tick
244 mov $diff,$lastdiff
245 cmovne $tick,1,$tick
246 subl $cnt,$tick,$cnt
247 s4addq $tick,$out,$out
248 bne $cnt,.Loop2
249
250.Ldone2:
251 subl $v0,$cnt,$v0
252 ret ($ra)
253.end OPENSSL_instrument_bus2
254___
255}
256
257close STDOUT or die "error closing STDOUT: $!";
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette