| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * memcmp for PowerPC32 | |
| * | |
| * Copyright (C) 1996 Paul Mackerras. | |
| * | |
| */ | |
| #include <asm/ppc_asm.h> | |
| #include <asm/export.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) |