xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1.machine	"any"
2.text
3
4.globl	OPENSSL_fpu_probe
5.type	OPENSSL_fpu_probe,@function
6.align	4
7OPENSSL_fpu_probe:
8	fmr	0,0
9	blr
10.long	0
11.byte	0,12,0x14,0,0,0,0,0
12
13.globl	OPENSSL_ppc64_probe
14.type	OPENSSL_ppc64_probe,@function
15.align	4
16OPENSSL_ppc64_probe:
17	fcfid	1,1
18	rldicl	0,0,32,32
19	blr
20.long	0
21.byte	0,12,0x14,0,0,0,0,0
22
23
24.globl	OPENSSL_altivec_probe
25.type	OPENSSL_altivec_probe,@function
26.align	4
27OPENSSL_altivec_probe:
28.long	0x10000484
29	blr
30.long	0
31.byte	0,12,0x14,0,0,0,0,0
32
33
34.globl	OPENSSL_crypto207_probe
35.type	OPENSSL_crypto207_probe,@function
36.align	4
37OPENSSL_crypto207_probe:
38.long	0x7C000E99
39.long	0x10000508
40	blr
41.long	0
42.byte	0,12,0x14,0,0,0,0,0
43
44
45.globl	OPENSSL_madd300_probe
46.type	OPENSSL_madd300_probe,@function
47.align	4
48OPENSSL_madd300_probe:
49	xor	0,0,0
50.long	0x10600033
51.long	0x10600031
52	blr
53.long	0
54.byte	0,12,0x14,0,0,0,0,0
55
56.globl	OPENSSL_wipe_cpu
57.type	OPENSSL_wipe_cpu,@function
58.align	4
59OPENSSL_wipe_cpu:
60	xor	0,0,0
61	fmr	0,31
62	fmr	1,31
63	fmr	2,31
64	mr	3,1
65	fmr	3,31
66	xor	4,4,4
67	fmr	4,31
68	xor	5,5,5
69	fmr	5,31
70	xor	6,6,6
71	fmr	6,31
72	xor	7,7,7
73	fmr	7,31
74	xor	8,8,8
75	fmr	8,31
76	xor	9,9,9
77	fmr	9,31
78	xor	10,10,10
79	fmr	10,31
80	xor	11,11,11
81	fmr	11,31
82	xor	12,12,12
83	fmr	12,31
84	fmr	13,31
85	blr
86.long	0
87.byte	0,12,0x14,0,0,0,0,0
88
89
90.globl	OPENSSL_atomic_add
91.type	OPENSSL_atomic_add,@function
92.align	4
93OPENSSL_atomic_add:
94.Ladd:	lwarx	5,0,3
95	add	0,4,5
96	stwcx.	0,0,3
97	bne-	.Ladd
98	mr	3,0
99	blr
100.long	0
101.byte	0,12,0x14,0,0,0,2,0
102.long	0
103
104
105.globl	OPENSSL_rdtsc
106.type	OPENSSL_rdtsc,@function
107.align	4
108OPENSSL_rdtsc:
109.Loop_rdtsc:
110	mftbu	5
111	mftb	3
112	mftbu	4
113	.long	0x7c042840
114	bne	.Loop_rdtsc
115	blr
116.long	0
117.byte	0,12,0x14,0,0,0,0,0
118
119
120.globl	OPENSSL_cleanse
121.type	OPENSSL_cleanse,@function
122.align	4
123OPENSSL_cleanse:
124	cmplwi	4,7
125	li	0,0
126	bge	.Lot
127	cmplwi	4,0
128	beqlr
129.Little:	mtctr	4
130	stb	0,0(3)
131	addi	3,3,1
132	bc	16,0,$-8
133	blr
134.Lot:	andi.	5,3,3
135	beq	.Laligned
136	stb	0,0(3)
137	subi	4,4,1
138	addi	3,3,1
139	b	.Lot
140.Laligned:
141	srwi	5,4,2
142	mtctr	5
143	stw	0,0(3)
144	addi	3,3,4
145	bc	16,0,$-8
146	andi.	4,4,3
147	bne	.Little
148	blr
149.long	0
150.byte	0,12,0x14,0,0,0,2,0
151.long	0
152
153
154.globl	CRYPTO_memcmp
155.type	CRYPTO_memcmp,@function
156.align	4
157CRYPTO_memcmp:
158	cmplwi	5,0
159	li	0,0
160	beq	.Lno_data
161	mtctr	5
162.Loop_cmp:
163	lbz	6,0(3)
164	addi	3,3,1
165	lbz	7,0(4)
166	addi	4,4,1
167	xor	6,6,7
168	or	0,0,6
169	bc	16,0,.Loop_cmp
170
171.Lno_data:
172	li	3,0
173	sub	3,3,0
174	extrwi	3,3,1,0
175	blr
176.long	0
177.byte	0,12,0x14,0,0,0,3,0
178.long	0
179
180.globl	OPENSSL_instrument_bus
181.type	OPENSSL_instrument_bus,@function
182.align	4
183OPENSSL_instrument_bus:
184	mtctr	4
185
186	mftb	7
187	li	8,0
188
189	dcbf	0,3
190	lwarx	6,0,3
191	add	6,6,8
192	stwcx.	6,0,3
193	stwx	6,0,3
194
195.Loop:	mftb	6
196	sub	8,6,7
197	mr	7,6
198	dcbf	0,3
199	lwarx	6,0,3
200	add	6,6,8
201	stwcx.	6,0,3
202	stwx	6,0,3
203	addi	3,3,4
204	bc	16,0,.Loop
205
206	mr	3,4
207	blr
208.long	0
209.byte	0,12,0x14,0,0,0,2,0
210.long	0
211
212
213.globl	OPENSSL_instrument_bus2
214.type	OPENSSL_instrument_bus2,@function
215.align	4
216OPENSSL_instrument_bus2:
217	mr	0,4
218	slwi	4,4,2
219
220	mftb	7
221	li	8,0
222
223	dcbf	0,3
224	lwarx	6,0,3
225	add	6,6,8
226	stwcx.	6,0,3
227	stwx	6,0,3
228
229	mftb	6
230	sub	8,6,7
231	mr	7,6
232	mr	9,8
233.Loop2:
234	dcbf	0,3
235	lwarx	6,0,3
236	add	6,6,8
237	stwcx.	6,0,3
238	stwx	6,0,3
239
240	addic.	5,5,-1
241	beq	.Ldone2
242
243	mftb	6
244	sub	8,6,7
245	mr	7,6
246	.long	0x7f884840
247	mr	9,8
248
249	mfcr	6
250	not	6,6
251	rlwinm	6,6,1,29,29
252
253	sub.	4,4,6
254	add	3,3,6
255	bne	.Loop2
256
257.Ldone2:
258	srwi	4,4,2
259	sub	3,0,4
260	blr
261.long	0
262.byte	0,12,0x14,0,0,0,3,0
263.long	0
264
265