crc32c_asm.S 358 B

123456789101112131415161718192021
  1. #include <linux/linkage.h>
  2. #include <asm/visasm.h>
  3. #include <asm/asi.h>
  4. #include "opcodes.h"
  5. ENTRY(crc32c_sparc64)
  6. /* %o0=crc32p, %o1=data_ptr, %o2=len */
  7. VISEntryHalf
  8. lda [%o0] ASI_PL, %f1
  9. 1: ldd [%o1], %f2
  10. CRC32C(0,2,0)
  11. subcc %o2, 8, %o2
  12. bne,pt %icc, 1b
  13. add %o1, 0x8, %o1
  14. sta %f1, [%o0] ASI_PL
  15. VISExitHalf
  16. 2: retl
  17. nop
  18. ENDPROC(crc32c_sparc64)