| /* SPDX-License-Identifier: GPL-2.0 */ |
| |
| /* |
| * memcmp for PowerPC32 |
| * |
| * Copyright (C) 1996 Paul Mackerras. |
| * |
| */ |
| |
| #include <linux/export.h> |
| #include <asm/ppc_asm.h> |
| |
| .text |
| |
| _GLOBAL(memcmp) |
| srawi. r7, r5, 2 /* Divide len by 4 */ |
| mr r6, r3 |
| beq- 3f |
| mtctr r7 |
| li r7, 0 |
| 1: lwzx r3, r6, r7 |
| lwzx r0, r4, r7 |
| addi r7, r7, 4 |
| cmplw cr0, r3, r0 |
| bdnzt eq, 1b |
| bne 5f |
| 3: andi. r3, r5, 3 |
| beqlr |
| cmplwi cr1, r3, 2 |
| blt- cr1, 4f |
| lhzx r3, r6, r7 |
| lhzx r0, r4, r7 |
| addi r7, r7, 2 |
| subf. r3, r0, r3 |
| beqlr cr1 |
| bnelr |
| 4: lbzx r3, r6, r7 |
| lbzx r0, r4, r7 |
| subf. r3, r0, r3 |
| blr |
| 5: li r3, 1 |
| bgtlr |
| li r3, -1 |
| blr |
| EXPORT_SYMBOL(memcmp) |