#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)