xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S (revision 1847e6b0e87104a48d8a051e0f350b91cd32e985)
1.text
2
3.set	noat
4
5.globl	OPENSSL_cpuid_setup
6.ent	OPENSSL_cpuid_setup
7OPENSSL_cpuid_setup:
8	.frame	$30,0,$26
9	.prologue 0
10	ret	($26)
11.end	OPENSSL_cpuid_setup
12
13.globl	OPENSSL_wipe_cpu
14.ent	OPENSSL_wipe_cpu
15OPENSSL_wipe_cpu:
16	.frame	$30,0,$26
17	.prologue 0
18	clr	$1
19	clr	$2
20	clr	$3
21	clr	$4
22	clr	$5
23	clr	$6
24	clr	$7
25	clr	$8
26	clr	$16
27	clr	$17
28	clr	$18
29	clr	$19
30	clr	$20
31	clr	$21
32	clr	$22
33	clr	$23
34	clr	$24
35	clr	$25
36	clr	$27
37	clr	$at
38	clr	$29
39	fclr	$f0
40	fclr	$f1
41	fclr	$f10
42	fclr	$f11
43	fclr	$f12
44	fclr	$f13
45	fclr	$f14
46	fclr	$f15
47	fclr	$f16
48	fclr	$f17
49	fclr	$f18
50	fclr	$f19
51	fclr	$f20
52	fclr	$f21
53	fclr	$f22
54	fclr	$f23
55	fclr	$f24
56	fclr	$f25
57	fclr	$f26
58	fclr	$f27
59	fclr	$f28
60	fclr	$f29
61	fclr	$f30
62	mov	$sp,$0
63	ret	($26)
64.end	OPENSSL_wipe_cpu
65
66.globl	OPENSSL_atomic_add
67.ent	OPENSSL_atomic_add
68OPENSSL_atomic_add:
69	.frame	$30,0,$26
70	.prologue 0
711:	ldl_l	$0,0($16)
72	addl	$0,$17,$1
73	stl_c	$1,0($16)
74	beq	$1,1b
75	addl	$0,$17,$0
76	ret	($26)
77.end	OPENSSL_atomic_add
78
79.globl	OPENSSL_rdtsc
80.ent	OPENSSL_rdtsc
81OPENSSL_rdtsc:
82	.frame	$30,0,$26
83	.prologue 0
84	rpcc	$0
85	ret	($26)
86.end	OPENSSL_rdtsc
87
88.globl	OPENSSL_cleanse
89.ent	OPENSSL_cleanse
90OPENSSL_cleanse:
91	.frame	$30,0,$26
92	.prologue 0
93	beq	$17,.Ldone
94	and	$16,7,$0
95	bic	$17,7,$at
96	beq	$at,.Little
97	beq	$0,.Laligned
98
99.Little:
100	subq	$0,8,$0
101	ldq_u	$1,0($16)
102	mov	$16,$2
103.Lalign:
104	mskbl	$1,$16,$1
105	lda	$16,1($16)
106	subq	$17,1,$17
107	addq	$0,1,$0
108	beq	$17,.Lout
109	bne	$0,.Lalign
110.Lout:	stq_u	$1,0($2)
111	beq	$17,.Ldone
112	bic	$17,7,$at
113	beq	$at,.Little
114
115.Laligned:
116	stq	$31,0($16)
117	subq	$17,8,$17
118	lda	$16,8($16)
119	bic	$17,7,$at
120	bne	$at,.Laligned
121	bne	$17,.Little
122.Ldone: ret	($26)
123.end	OPENSSL_cleanse
124
125.globl	CRYPTO_memcmp
126.ent	CRYPTO_memcmp
127CRYPTO_memcmp:
128	.frame	$30,0,$26
129	.prologue 0
130	xor	$0,$0,$0
131	beq	$18,.Lno_data
132
133	xor	$1,$1,$1
134	nop
135.Loop_cmp:
136	ldq_u	$2,0($16)
137	subq	$18,1,$18
138	ldq_u	$3,0($17)
139	extbl	$2,$16,$2
140	lda	$16,1($16)
141	extbl	$3,$17,$3
142	lda	$17,1($17)
143	xor	$3,$2,$2
144	or	$2,$0,$0
145	bne	$18,.Loop_cmp
146
147	subq	$31,$0,$0
148	srl	$0,63,$0
149.Lno_data:
150	ret	($26)
151.end	CRYPTO_memcmp
152.globl	OPENSSL_instrument_bus
153.ent	OPENSSL_instrument_bus
154OPENSSL_instrument_bus:
155	.frame	$30,0,$26
156	.prologue 0
157	mov	$17,$0
158
159	rpcc	$20
160	mov	0,$21
161
162	ecb	($16)
163	ldl_l	$19,0($16)
164	addl	$21,$19,$19
165	mov	$19,$21
166	stl_c	$19,0($16)
167	stl	$21,0($16)
168
169.Loop:	rpcc	$19
170	subq	$19,$20,$21
171	mov	$19,$20
172
173	ecb	($16)
174	ldl_l	$19,0($16)
175	addl	$21,$19,$19
176	mov	$19,$21
177	stl_c	$19,0($16)
178	stl	$21,0($16)
179
180	subl	$17,1,$17
181	lda	$16,4($16)
182	bne	$17,.Loop
183
184	ret	($26)
185.end	OPENSSL_instrument_bus
186
187.globl	OPENSSL_instrument_bus2
188.ent	OPENSSL_instrument_bus2
189OPENSSL_instrument_bus2:
190	.frame	$30,0,$26
191	.prologue 0
192	mov	$17,$0
193
194	rpcc	$20
195	mov	0,$21
196
197	ecb	($16)
198	ldl_l	$19,0($16)
199	addl	$21,$19,$19
200	mov	$19,$21
201	stl_c	$19,0($16)
202	stl	$21,0($16)
203
204	rpcc	$19
205	subq	$19,$20,$21
206	mov	$19,$20
207	mov	$21,$22
208.Loop2:
209	ecb	($16)
210	ldl_l	$19,0($16)
211	addl	$21,$19,$19
212	mov	$19,$21
213	stl_c	$19,0($16)
214	stl	$21,0($16)
215
216	subl	$18,1,$18
217	beq	$18,.Ldone2
218
219	rpcc	$19
220	subq	$19,$20,$21
221	mov	$19,$20
222	subq	$22,$21,$19
223	mov	$21,$22
224	cmovne	$19,1,$19
225	subl	$17,$19,$17
226	s4addq	$19,$16,$16
227	bne	$17,.Loop2
228
229.Ldone2:
230	subl	$0,$17,$0
231	ret	($26)
232.end	OPENSSL_instrument_bus2
233