22 lines
		
	
	
		
			397 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			397 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #include <linux/linkage.h>
 | |
| #include <asm/visasm.h>
 | |
| #include <asm/asi.h>
 | |
| 
 | |
| #include "opcodes.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)
 |