1*9b2d720eSEric Biggers/* SPDX-License-Identifier: GPL-2.0 */ 2*9b2d720eSEric Biggers#include <linux/linkage.h> 3*9b2d720eSEric Biggers#include <asm/opcodes.h> 4*9b2d720eSEric Biggers#include <asm/visasm.h> 5*9b2d720eSEric Biggers#include <asm/asi.h> 6*9b2d720eSEric Biggers 7*9b2d720eSEric BiggersENTRY(crc32c_sparc64) 8*9b2d720eSEric Biggers /* %o0=crc32p, %o1=data_ptr, %o2=len */ 9*9b2d720eSEric Biggers VISEntryHalf 10*9b2d720eSEric Biggers lda [%o0] ASI_PL, %f1 11*9b2d720eSEric Biggers1: ldd [%o1], %f2 12*9b2d720eSEric Biggers CRC32C(0,2,0) 13*9b2d720eSEric Biggers subcc %o2, 8, %o2 14*9b2d720eSEric Biggers bne,pt %icc, 1b 15*9b2d720eSEric Biggers add %o1, 0x8, %o1 16*9b2d720eSEric Biggers sta %f1, [%o0] ASI_PL 17*9b2d720eSEric Biggers VISExitHalf 18*9b2d720eSEric Biggers2: retl 19*9b2d720eSEric Biggers nop 20*9b2d720eSEric BiggersENDPROC(crc32c_sparc64) 21