162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci/* 462306a36Sopenharmony_ci * memcmp for PowerPC32 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 1996 Paul Mackerras. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <linux/export.h> 1162306a36Sopenharmony_ci#include <asm/ppc_asm.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci .text 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci_GLOBAL(memcmp) 1662306a36Sopenharmony_ci srawi. r7, r5, 2 /* Divide len by 4 */ 1762306a36Sopenharmony_ci mr r6, r3 1862306a36Sopenharmony_ci beq- 3f 1962306a36Sopenharmony_ci mtctr r7 2062306a36Sopenharmony_ci li r7, 0 2162306a36Sopenharmony_ci1: lwzx r3, r6, r7 2262306a36Sopenharmony_ci lwzx r0, r4, r7 2362306a36Sopenharmony_ci addi r7, r7, 4 2462306a36Sopenharmony_ci cmplw cr0, r3, r0 2562306a36Sopenharmony_ci bdnzt eq, 1b 2662306a36Sopenharmony_ci bne 5f 2762306a36Sopenharmony_ci3: andi. r3, r5, 3 2862306a36Sopenharmony_ci beqlr 2962306a36Sopenharmony_ci cmplwi cr1, r3, 2 3062306a36Sopenharmony_ci blt- cr1, 4f 3162306a36Sopenharmony_ci lhzx r3, r6, r7 3262306a36Sopenharmony_ci lhzx r0, r4, r7 3362306a36Sopenharmony_ci addi r7, r7, 2 3462306a36Sopenharmony_ci subf. r3, r0, r3 3562306a36Sopenharmony_ci beqlr cr1 3662306a36Sopenharmony_ci bnelr 3762306a36Sopenharmony_ci4: lbzx r3, r6, r7 3862306a36Sopenharmony_ci lbzx r0, r4, r7 3962306a36Sopenharmony_ci subf. r3, r0, r3 4062306a36Sopenharmony_ci blr 4162306a36Sopenharmony_ci5: li r3, 1 4262306a36Sopenharmony_ci bgtlr 4362306a36Sopenharmony_ci li r3, -1 4462306a36Sopenharmony_ci blr 4562306a36Sopenharmony_ciEXPORT_SYMBOL(memcmp) 46