xref: /openbmc/linux/arch/sparc/crypto/sha256_asm.S (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
286c93b24SDavid S. Miller#include <linux/linkage.h>
386c93b24SDavid S. Miller#include <asm/visasm.h>
486c93b24SDavid S. Miller
57cff82f5SDavid S. Miller#include "opcodes.h"
67cff82f5SDavid S. Miller
786c93b24SDavid S. MillerENTRY(sha256_sparc64_transform)
886c93b24SDavid S. Miller	/* %o0 = digest, %o1 = data, %o2 = rounds */
986c93b24SDavid S. Miller	VISEntryHalf
1086c93b24SDavid S. Miller	ld	[%o0 + 0x00], %f0
1186c93b24SDavid S. Miller	ld	[%o0 + 0x04], %f1
1286c93b24SDavid S. Miller	ld	[%o0 + 0x08], %f2
1386c93b24SDavid S. Miller	ld	[%o0 + 0x0c], %f3
1486c93b24SDavid S. Miller	ld	[%o0 + 0x10], %f4
1586c93b24SDavid S. Miller	ld	[%o0 + 0x14], %f5
1686c93b24SDavid S. Miller	andcc	%o1, 0x7, %g0
1786c93b24SDavid S. Miller	ld	[%o0 + 0x18], %f6
1886c93b24SDavid S. Miller	bne,pn	%xcc, 10f
1986c93b24SDavid S. Miller	 ld	[%o0 + 0x1c], %f7
2086c93b24SDavid S. Miller
2186c93b24SDavid S. Miller1:
2286c93b24SDavid S. Miller	ldd	[%o1 + 0x00], %f8
2386c93b24SDavid S. Miller	ldd	[%o1 + 0x08], %f10
2486c93b24SDavid S. Miller	ldd	[%o1 + 0x10], %f12
2586c93b24SDavid S. Miller	ldd	[%o1 + 0x18], %f14
2686c93b24SDavid S. Miller	ldd	[%o1 + 0x20], %f16
2786c93b24SDavid S. Miller	ldd	[%o1 + 0x28], %f18
2886c93b24SDavid S. Miller	ldd	[%o1 + 0x30], %f20
2986c93b24SDavid S. Miller	ldd	[%o1 + 0x38], %f22
3086c93b24SDavid S. Miller
317cff82f5SDavid S. Miller	SHA256
3286c93b24SDavid S. Miller
3386c93b24SDavid S. Miller	subcc	%o2, 1, %o2
3486c93b24SDavid S. Miller	bne,pt	%xcc, 1b
3586c93b24SDavid S. Miller	 add	%o1, 0x40, %o1
3686c93b24SDavid S. Miller
3786c93b24SDavid S. Miller5:
3886c93b24SDavid S. Miller	st	%f0, [%o0 + 0x00]
3986c93b24SDavid S. Miller	st	%f1, [%o0 + 0x04]
4086c93b24SDavid S. Miller	st	%f2, [%o0 + 0x08]
4186c93b24SDavid S. Miller	st	%f3, [%o0 + 0x0c]
4286c93b24SDavid S. Miller	st	%f4, [%o0 + 0x10]
4386c93b24SDavid S. Miller	st	%f5, [%o0 + 0x14]
4486c93b24SDavid S. Miller	st	%f6, [%o0 + 0x18]
4586c93b24SDavid S. Miller	st	%f7, [%o0 + 0x1c]
4686c93b24SDavid S. Miller	retl
4786c93b24SDavid S. Miller	 VISExitHalf
4886c93b24SDavid S. Miller10:
4986c93b24SDavid S. Miller	alignaddr %o1, %g0, %o1
5086c93b24SDavid S. Miller
5186c93b24SDavid S. Miller	ldd	[%o1 + 0x00], %f10
5286c93b24SDavid S. Miller1:
5386c93b24SDavid S. Miller	ldd	[%o1 + 0x08], %f12
5486c93b24SDavid S. Miller	ldd	[%o1 + 0x10], %f14
5586c93b24SDavid S. Miller	ldd	[%o1 + 0x18], %f16
5686c93b24SDavid S. Miller	ldd	[%o1 + 0x20], %f18
5786c93b24SDavid S. Miller	ldd	[%o1 + 0x28], %f20
5886c93b24SDavid S. Miller	ldd	[%o1 + 0x30], %f22
5986c93b24SDavid S. Miller	ldd	[%o1 + 0x38], %f24
6086c93b24SDavid S. Miller	ldd	[%o1 + 0x40], %f26
6186c93b24SDavid S. Miller
6286c93b24SDavid S. Miller	faligndata %f10, %f12, %f8
6386c93b24SDavid S. Miller	faligndata %f12, %f14, %f10
6486c93b24SDavid S. Miller	faligndata %f14, %f16, %f12
6586c93b24SDavid S. Miller	faligndata %f16, %f18, %f14
6686c93b24SDavid S. Miller	faligndata %f18, %f20, %f16
6786c93b24SDavid S. Miller	faligndata %f20, %f22, %f18
6886c93b24SDavid S. Miller	faligndata %f22, %f24, %f20
6986c93b24SDavid S. Miller	faligndata %f24, %f26, %f22
7086c93b24SDavid S. Miller
717cff82f5SDavid S. Miller	SHA256
7286c93b24SDavid S. Miller
7386c93b24SDavid S. Miller	subcc	%o2, 1, %o2
7445dfe237SDavid S. Miller	fsrc2	%f26, %f10
7586c93b24SDavid S. Miller	bne,pt	%xcc, 1b
7686c93b24SDavid S. Miller	 add	%o1, 0x40, %o1
7786c93b24SDavid S. Miller
7886c93b24SDavid S. Miller	ba,a,pt	%xcc, 5b
7986c93b24SDavid S. MillerENDPROC(sha256_sparc64_transform)
80