1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | /* |
4 | * memcmp for PowerPC32 |
5 | * |
6 | * Copyright (C) 1996 Paul Mackerras. |
7 | * |
8 | */ |
9 | |
10 | #include <linux/export.h> |
11 | #include <asm/ppc_asm.h> |
12 | |
13 | .text |
14 | |
15 | _GLOBAL(memcmp) |
16 | srawi. r7, r5, 2 /* Divide len by 4 */ |
17 | mr r6, r3 |
18 | beq- 3f |
19 | mtctr r7 |
20 | li r7, 0 |
21 | 1: lwzx r3, r6, r7 |
22 | lwzx r0, r4, r7 |
23 | addi r7, r7, 4 |
24 | cmplw cr0, r3, r0 |
25 | bdnzt eq, 1b |
26 | bne 5f |
27 | 3: andi. r3, r5, 3 |
28 | beqlr |
29 | cmplwi cr1, r3, 2 |
30 | blt- cr1, 4f |
31 | lhzx r3, r6, r7 |
32 | lhzx r0, r4, r7 |
33 | addi r7, r7, 2 |
34 | subf. r3, r0, r3 |
35 | beqlr cr1 |
36 | bnelr |
37 | 4: lbzx r3, r6, r7 |
38 | lbzx r0, r4, r7 |
39 | subf. r3, r0, r3 |
40 | blr |
41 | 5: li r3, 1 |
42 | bgtlr |
43 | li r3, -1 |
44 | blr |
45 | EXPORT_SYMBOL(memcmp) |
46 | |