.machine	"any"
.text

.globl	OPENSSL_cpuid_setup
.type	OPENSSL_cpuid_setup,@function
.align	4
OPENSSL_cpuid_setup:
	blr	

.globl	OPENSSL_wipe_cpu
.type	OPENSSL_wipe_cpu,@function
.align	4
OPENSSL_wipe_cpu:
	xor	0,0,0
	mr	3,1
	xor	4,4,4
	xor	5,5,5
	xor	6,6,6
	xor	7,7,7
	xor	8,8,8
	xor	9,9,9
	xor	10,10,10
	xor	11,11,11
	xor	12,12,12
	blr	

.globl	OPENSSL_atomic_add
.type	OPENSSL_atomic_add,@function
.align	4
OPENSSL_atomic_add:
.Loop:	lwarx	5,0,3
	add	0,4,5
	stwcx.	0,0,3
	bne-	.Loop
	mr	3,0
	blr	

.globl	OPENSSL_rdtsc
.type	OPENSSL_rdtsc,@function
.align	4
OPENSSL_rdtsc:
	mftb	3
	mftbu	4
	blr	

.globl	OPENSSL_cleanse
.type	OPENSSL_cleanse,@function
.align	4
OPENSSL_cleanse:
	cmplwi	4,7
	li	0,0
	bge	.Lot
	cmplwi	4,0
	bclr	14,2
.Little:	mtctr	4
	stb	0,0(3)
	addi	3,3,1
	bdnz+	$-8
	blr	
.Lot:	andi.	5,3,3
	beq	.Laligned
	stb	0,0(3)
	subi	4,4,1
	addi	3,3,1
	b	.Lot
.Laligned:
	srwi	5,4,2
	mtctr	5
	stw	0,0(3)
	addi	3,3,4
	bdnz+	$-8
	andi.	4,4,3
	bne	.Little
	blr	
