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