143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom#!/usr/bin/env perl
243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstromprint <<'___';
343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.text
443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.set	noat
643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.globl	OPENSSL_cpuid_setup
843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.ent	OPENSSL_cpuid_setup
943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian CarlstromOPENSSL_cpuid_setup:
1043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.frame	$30,0,$26
1143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.prologue 0
1243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ret	($26)
1343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.end	OPENSSL_cpuid_setup
1443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
1543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.globl	OPENSSL_wipe_cpu
1643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.ent	OPENSSL_wipe_cpu
1743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian CarlstromOPENSSL_wipe_cpu:
1843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.frame	$30,0,$26
1943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.prologue 0
2043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$1
2143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$2
2243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$3
2343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$4
2443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$5
2543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$6
2643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$7
2743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$8
2843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$16
2943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$17
3043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$18
3143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$19
3243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$20
3343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$21
3443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$22
3543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$23
3643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$24
3743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$25
3843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$27
3943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$at
4043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	clr	$29
4143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f0
4243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f1
4343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f10
4443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f11
4543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f12
4643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f13
4743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f14
4843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f15
4943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f16
5043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f17
5143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f18
5243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f19
5343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f20
5443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f21
5543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f22
5643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f23
5743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f24
5843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f25
5943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f26
6043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f27
6143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f28
6243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f29
6343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	fclr	$f30
6443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	$sp,$0
6543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ret	($26)
6643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.end	OPENSSL_wipe_cpu
6743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
6843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.globl	OPENSSL_atomic_add
6943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.ent	OPENSSL_atomic_add
7043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian CarlstromOPENSSL_atomic_add:
7143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.frame	$30,0,$26
7243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.prologue 0
7343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom1:	ldl_l	$0,0($16)
7443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	addl	$0,$17,$1
7543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	stl_c	$1,0($16)
7643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$1,1b
7743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	addl	$0,$17,$0
7843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ret	($26)
7943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.end	OPENSSL_atomic_add
8043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
8143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.globl	OPENSSL_rdtsc
8243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.ent	OPENSSL_rdtsc
8343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian CarlstromOPENSSL_rdtsc:
8443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.frame	$30,0,$26
8543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.prologue 0
8643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	rpcc	$0
8743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ret	($26)
8843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.end	OPENSSL_rdtsc
8943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
9043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.globl	OPENSSL_cleanse
9143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.ent	OPENSSL_cleanse
9243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian CarlstromOPENSSL_cleanse:
9343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.frame	$30,0,$26
9443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	.prologue 0
9543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$17,.Ldone
9643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	and	$16,7,$0
9743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	bic	$17,7,$at
9843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$at,.Little
9943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$0,.Laligned
10043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
10143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Little:
102ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom	subq	$0,8,$0
10343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	ldq_u	$1,0($16)
10443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mov	$16,$2
10543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Lalign:
10643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	mskbl	$1,$16,$1
10743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	lda	$16,1($16)
10843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	subq	$17,1,$17
109ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom	addq	$0,1,$0
11043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$17,.Lout
11143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	bne	$0,.Lalign
11243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Lout:	stq_u	$1,0($2)
11343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$17,.Ldone
11443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	bic	$17,7,$at
11543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	beq	$at,.Little
11643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom
11743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Laligned:
11843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	stq	$31,0($16)
11943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	subq	$17,8,$17
12043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	lda	$16,8($16)
12143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	bic	$17,7,$at
12243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom	bne	$at,.Laligned
123ee7afb3c942c4eefef6ed06201eafaf8ec58e2e3Brian Carlstrom	bne	$17,.Little
12443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Ldone: ret	($26)
12543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.end	OPENSSL_cleanse
12643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom___
127