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