xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc64/ppccpuid.S (revision cf560a470f0171bbbfa1ea4b3cea92d44131a14d)
1.machine	"any"
2.text
3
4.globl	OPENSSL_fpu_probe
5.type	OPENSSL_fpu_probe,@function
6.section	".opd","aw"
7.align	3
8OPENSSL_fpu_probe:
9.quad	.OPENSSL_fpu_probe,.TOC.@tocbase,0
10.previous
11.align	4
12.OPENSSL_fpu_probe:
13	fmr	0,0
14	blr
15.long	0
16.byte	0,12,0x14,0,0,0,0,0
17
18.globl	OPENSSL_ppc64_probe
19.type	OPENSSL_ppc64_probe,@function
20.section	".opd","aw"
21.align	3
22OPENSSL_ppc64_probe:
23.quad	.OPENSSL_ppc64_probe,.TOC.@tocbase,0
24.previous
25.align	4
26.OPENSSL_ppc64_probe:
27	fcfid	1,1
28	rldicl	0,0,32,32
29	blr
30.long	0
31.byte	0,12,0x14,0,0,0,0,0
32
33
34.globl	OPENSSL_altivec_probe
35.type	OPENSSL_altivec_probe,@function
36.section	".opd","aw"
37.align	3
38OPENSSL_altivec_probe:
39.quad	.OPENSSL_altivec_probe,.TOC.@tocbase,0
40.previous
41.align	4
42.OPENSSL_altivec_probe:
43.long	0x10000484
44	blr
45.long	0
46.byte	0,12,0x14,0,0,0,0,0
47
48
49.globl	OPENSSL_crypto207_probe
50.type	OPENSSL_crypto207_probe,@function
51.section	".opd","aw"
52.align	3
53OPENSSL_crypto207_probe:
54.quad	.OPENSSL_crypto207_probe,.TOC.@tocbase,0
55.previous
56.align	4
57.OPENSSL_crypto207_probe:
58.long	0x7C000E99
59.long	0x10000508
60	blr
61.long	0
62.byte	0,12,0x14,0,0,0,0,0
63
64
65.globl	OPENSSL_madd300_probe
66.type	OPENSSL_madd300_probe,@function
67.section	".opd","aw"
68.align	3
69OPENSSL_madd300_probe:
70.quad	.OPENSSL_madd300_probe,.TOC.@tocbase,0
71.previous
72.align	4
73.OPENSSL_madd300_probe:
74	xor	0,0,0
75.long	0x10600033
76.long	0x10600031
77	blr
78.long	0
79.byte	0,12,0x14,0,0,0,0,0
80
81.globl	OPENSSL_wipe_cpu
82.type	OPENSSL_wipe_cpu,@function
83.section	".opd","aw"
84.align	3
85OPENSSL_wipe_cpu:
86.quad	.OPENSSL_wipe_cpu,.TOC.@tocbase,0
87.previous
88.align	4
89.OPENSSL_wipe_cpu:
90	xor	0,0,0
91	fmr	0,31
92	fmr	1,31
93	fmr	2,31
94	mr	3,1
95	fmr	3,31
96	xor	4,4,4
97	fmr	4,31
98	xor	5,5,5
99	fmr	5,31
100	xor	6,6,6
101	fmr	6,31
102	xor	7,7,7
103	fmr	7,31
104	xor	8,8,8
105	fmr	8,31
106	xor	9,9,9
107	fmr	9,31
108	xor	10,10,10
109	fmr	10,31
110	xor	11,11,11
111	fmr	11,31
112	xor	12,12,12
113	fmr	12,31
114	fmr	13,31
115	blr
116.long	0
117.byte	0,12,0x14,0,0,0,0,0
118
119
120.globl	OPENSSL_atomic_add
121.type	OPENSSL_atomic_add,@function
122.section	".opd","aw"
123.align	3
124OPENSSL_atomic_add:
125.quad	.OPENSSL_atomic_add,.TOC.@tocbase,0
126.previous
127.align	4
128.OPENSSL_atomic_add:
129.Ladd:	lwarx	5,0,3
130	add	0,4,5
131	stwcx.	0,0,3
132	bne-	.Ladd
133	extsw	3,0
134	blr
135.long	0
136.byte	0,12,0x14,0,0,0,2,0
137.long	0
138
139
140.globl	OPENSSL_rdtsc_mftb
141.type	OPENSSL_rdtsc_mftb,@function
142.section	".opd","aw"
143.align	3
144OPENSSL_rdtsc_mftb:
145.quad	.OPENSSL_rdtsc_mftb,.TOC.@tocbase,0
146.previous
147.align	4
148.OPENSSL_rdtsc_mftb:
149	mftb	3
150	blr
151.long	0
152.byte	0,12,0x14,0,0,0,0,0
153
154
155.globl	OPENSSL_rdtsc_mfspr268
156.type	OPENSSL_rdtsc_mfspr268,@function
157.section	".opd","aw"
158.align	3
159OPENSSL_rdtsc_mfspr268:
160.quad	.OPENSSL_rdtsc_mfspr268,.TOC.@tocbase,0
161.previous
162.align	4
163.OPENSSL_rdtsc_mfspr268:
164	mfspr	3,268
165	blr
166.long	0
167.byte	0,12,0x14,0,0,0,0,0
168
169
170.globl	OPENSSL_cleanse
171.type	OPENSSL_cleanse,@function
172.section	".opd","aw"
173.align	3
174OPENSSL_cleanse:
175.quad	.OPENSSL_cleanse,.TOC.@tocbase,0
176.previous
177.align	4
178.OPENSSL_cleanse:
179	cmpldi	4,7
180	li	0,0
181	bge	.Lot
182	cmpldi	4,0
183	beqlr
184.Little:	mtctr	4
185	stb	0,0(3)
186	addi	3,3,1
187	bc	16,0,$-8
188	blr
189.Lot:	andi.	5,3,3
190	beq	.Laligned
191	stb	0,0(3)
192	subi	4,4,1
193	addi	3,3,1
194	b	.Lot
195.Laligned:
196	srdi	5,4,2
197	mtctr	5
198	stw	0,0(3)
199	addi	3,3,4
200	bc	16,0,$-8
201	andi.	4,4,3
202	bne	.Little
203	blr
204.long	0
205.byte	0,12,0x14,0,0,0,2,0
206.long	0
207
208
209.globl	CRYPTO_memcmp
210.type	CRYPTO_memcmp,@function
211.section	".opd","aw"
212.align	3
213CRYPTO_memcmp:
214.quad	.CRYPTO_memcmp,.TOC.@tocbase,0
215.previous
216.align	4
217.CRYPTO_memcmp:
218	cmpldi	5,0
219	li	0,0
220	beq	.Lno_data
221	mtctr	5
222.Loop_cmp:
223	lbz	6,0(3)
224	addi	3,3,1
225	lbz	7,0(4)
226	addi	4,4,1
227	xor	6,6,7
228	or	0,0,6
229	bc	16,0,.Loop_cmp
230
231.Lno_data:
232	li	3,0
233	sub	3,3,0
234	extrwi	3,3,1,0
235	blr
236.long	0
237.byte	0,12,0x14,0,0,0,3,0
238.long	0
239
240.globl	OPENSSL_instrument_bus_mftb
241.type	OPENSSL_instrument_bus_mftb,@function
242.section	".opd","aw"
243.align	3
244OPENSSL_instrument_bus_mftb:
245.quad	.OPENSSL_instrument_bus_mftb,.TOC.@tocbase,0
246.previous
247.align	4
248.OPENSSL_instrument_bus_mftb:
249	mtctr	4
250
251	mftb	7
252	li	8,0
253
254	dcbf	0,3
255	lwarx	6,0,3
256	add	6,6,8
257	stwcx.	6,0,3
258	stwx	6,0,3
259
260.Loop:	mftb	6
261	sub	8,6,7
262	mr	7,6
263	dcbf	0,3
264	lwarx	6,0,3
265	add	6,6,8
266	stwcx.	6,0,3
267	stwx	6,0,3
268	addi	3,3,4
269	bc	16,0,.Loop
270
271	mr	3,4
272	blr
273.long	0
274.byte	0,12,0x14,0,0,0,2,0
275.long	0
276
277
278.globl	OPENSSL_instrument_bus2_mftb
279.type	OPENSSL_instrument_bus2_mftb,@function
280.section	".opd","aw"
281.align	3
282OPENSSL_instrument_bus2_mftb:
283.quad	.OPENSSL_instrument_bus2_mftb,.TOC.@tocbase,0
284.previous
285.align	4
286.OPENSSL_instrument_bus2_mftb:
287	mr	0,4
288	slwi	4,4,2
289
290	mftb	7
291	li	8,0
292
293	dcbf	0,3
294	lwarx	6,0,3
295	add	6,6,8
296	stwcx.	6,0,3
297	stwx	6,0,3
298
299	mftb	6
300	sub	8,6,7
301	mr	7,6
302	mr	9,8
303.Loop2:
304	dcbf	0,3
305	lwarx	6,0,3
306	add	6,6,8
307	stwcx.	6,0,3
308	stwx	6,0,3
309
310	addic.	5,5,-1
311	beq	.Ldone2
312
313	mftb	6
314	sub	8,6,7
315	mr	7,6
316	cmplw	7,8,9
317	mr	9,8
318
319	mfcr	6
320	not	6,6
321	rlwinm	6,6,1,29,29
322
323	sub.	4,4,6
324	add	3,3,6
325	bne	.Loop2
326
327.Ldone2:
328	srwi	4,4,2
329	sub	3,0,4
330	blr
331.long	0
332.byte	0,12,0x14,0,0,0,3,0
333.long	0
334
335
336.globl	OPENSSL_instrument_bus_mfspr268
337.type	OPENSSL_instrument_bus_mfspr268,@function
338.section	".opd","aw"
339.align	3
340OPENSSL_instrument_bus_mfspr268:
341.quad	.OPENSSL_instrument_bus_mfspr268,.TOC.@tocbase,0
342.previous
343.align	4
344.OPENSSL_instrument_bus_mfspr268:
345	mtctr	4
346
347	mfspr	7,268
348	li	8,0
349
350	dcbf	0,3
351	lwarx	6,0,3
352	add	6,6,8
353	stwcx.	6,0,3
354	stwx	6,0,3
355
356.Loop3:	mfspr	6,268
357	sub	8,6,7
358	mr	7,6
359	dcbf	0,3
360	lwarx	6,0,3
361	add	6,6,8
362	stwcx.	6,0,3
363	stwx	6,0,3
364	addi	3,3,4
365	bc	16,0,.Loop3
366
367	mr	3,4
368	blr
369.long	0
370.byte	0,12,0x14,0,0,0,2,0
371.long	0
372
373
374.globl	OPENSSL_instrument_bus2_mfspr268
375.type	OPENSSL_instrument_bus2_mfspr268,@function
376.section	".opd","aw"
377.align	3
378OPENSSL_instrument_bus2_mfspr268:
379.quad	.OPENSSL_instrument_bus2_mfspr268,.TOC.@tocbase,0
380.previous
381.align	4
382.OPENSSL_instrument_bus2_mfspr268:
383	mr	0,4
384	slwi	4,4,2
385
386	mfspr	7,268
387	li	8,0
388
389	dcbf	0,3
390	lwarx	6,0,3
391	add	6,6,8
392	stwcx.	6,0,3
393	stwx	6,0,3
394
395	mfspr	6,268
396	sub	8,6,7
397	mr	7,6
398	mr	9,8
399.Loop4:
400	dcbf	0,3
401	lwarx	6,0,3
402	add	6,6,8
403	stwcx.	6,0,3
404	stwx	6,0,3
405
406	addic.	5,5,-1
407	beq	.Ldone4
408
409	mfspr	6,268
410	sub	8,6,7
411	mr	7,6
412	cmplw	7,8,9
413	mr	9,8
414
415	mfcr	6
416	not	6,6
417	rlwinm	6,6,1,29,29
418
419	sub.	4,4,6
420	add	3,3,6
421	bne	.Loop4
422
423.Ldone4:
424	srwi	4,4,2
425	sub	3,0,4
426	blr
427.long	0
428.byte	0,12,0x14,0,0,0,3,0
429.long	0
430
431