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