xref: /OK3568_Linux_fs/kernel/arch/sparc/crypto/crc32c_asm.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun#include <linux/linkage.h>
3*4882a593Smuzhiyun#include <asm/visasm.h>
4*4882a593Smuzhiyun#include <asm/asi.h>
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include "opcodes.h"
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunENTRY(crc32c_sparc64)
9*4882a593Smuzhiyun	/* %o0=crc32p, %o1=data_ptr, %o2=len */
10*4882a593Smuzhiyun	VISEntryHalf
11*4882a593Smuzhiyun	lda	[%o0] ASI_PL, %f1
12*4882a593Smuzhiyun1:	ldd	[%o1], %f2
13*4882a593Smuzhiyun	CRC32C(0,2,0)
14*4882a593Smuzhiyun	subcc	%o2, 8, %o2
15*4882a593Smuzhiyun	bne,pt	%icc, 1b
16*4882a593Smuzhiyun	 add	%o1, 0x8, %o1
17*4882a593Smuzhiyun	sta	%f1, [%o0] ASI_PL
18*4882a593Smuzhiyun	VISExitHalf
19*4882a593Smuzhiyun2:	retl
20*4882a593Smuzhiyun	 nop
21*4882a593SmuzhiyunENDPROC(crc32c_sparc64)
22