diff options
Diffstat (limited to 'kernel/arch/sparc/crypto/crc32c_asm.S')
-rw-r--r-- | kernel/arch/sparc/crypto/crc32c_asm.S | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/arch/sparc/crypto/crc32c_asm.S b/kernel/arch/sparc/crypto/crc32c_asm.S new file mode 100644 index 000000000..2b1976e76 --- /dev/null +++ b/kernel/arch/sparc/crypto/crc32c_asm.S @@ -0,0 +1,20 @@ +#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) |