VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.7/crypto/alphacpuid.pl@ 105945

最後變更 在這個檔案從105945是 104078,由 vboxsync 提交於 8 月 前

openssl-3.1.5: Applied and adjusted our OpenSSL changes to 3.1.4. bugref:10638

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

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