162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#include <linux/linkage.h> 362306a36Sopenharmony_ci#include <asm/visasm.h> 462306a36Sopenharmony_ci#include <asm/asi.h> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include "opcodes.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciENTRY(crc32c_sparc64) 962306a36Sopenharmony_ci /* %o0=crc32p, %o1=data_ptr, %o2=len */ 1062306a36Sopenharmony_ci VISEntryHalf 1162306a36Sopenharmony_ci lda [%o0] ASI_PL, %f1 1262306a36Sopenharmony_ci1: ldd [%o1], %f2 1362306a36Sopenharmony_ci CRC32C(0,2,0) 1462306a36Sopenharmony_ci subcc %o2, 8, %o2 1562306a36Sopenharmony_ci bne,pt %icc, 1b 1662306a36Sopenharmony_ci add %o1, 0x8, %o1 1762306a36Sopenharmony_ci sta %f1, [%o0] ASI_PL 1862306a36Sopenharmony_ci VISExitHalf 1962306a36Sopenharmony_ci2: retl 2062306a36Sopenharmony_ci nop 2162306a36Sopenharmony_ciENDPROC(crc32c_sparc64) 22