diff options
Diffstat (limited to 'lib/crc/sparc/crc32c_asm.S')
| -rw-r--r-- | lib/crc/sparc/crc32c_asm.S | 20 | 
1 files changed, 20 insertions, 0 deletions
| diff --git a/lib/crc/sparc/crc32c_asm.S b/lib/crc/sparc/crc32c_asm.S new file mode 100644 index 000000000000..4db873850f44 --- /dev/null +++ b/lib/crc/sparc/crc32c_asm.S @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include <linux/linkage.h> +#include <asm/opcodes.h> +#include <asm/visasm.h> +#include <asm/asi.h> + +ENTRY(crc32c_sparc64) +	/* %o0=crc32p, %o1=data_ptr, %o2=len */ +	VISEntryHalf +	lda	[%o0] ASI_PL, %f1 +1:	ldd	[%o1], %f2 +	CRC32C(0,2,0) +	subcc	%o2, 8, %o2 +	bne,pt	%icc, 1b +	 add	%o1, 0x8, %o1 +	sta	%f1, [%o0] ASI_PL +	VISExitHalf +2:	retl +	 nop +ENDPROC(crc32c_sparc64) | 
