18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci/* 48c2ecf20Sopenharmony_ci * memcmp for PowerPC32 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * Copyright (C) 1996 Paul Mackerras. 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <asm/ppc_asm.h> 118c2ecf20Sopenharmony_ci#include <asm/export.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci .text 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci_GLOBAL(memcmp) 168c2ecf20Sopenharmony_ci srawi. r7, r5, 2 /* Divide len by 4 */ 178c2ecf20Sopenharmony_ci mr r6, r3 188c2ecf20Sopenharmony_ci beq- 3f 198c2ecf20Sopenharmony_ci mtctr r7 208c2ecf20Sopenharmony_ci li r7, 0 218c2ecf20Sopenharmony_ci1: lwzx r3, r6, r7 228c2ecf20Sopenharmony_ci lwzx r0, r4, r7 238c2ecf20Sopenharmony_ci addi r7, r7, 4 248c2ecf20Sopenharmony_ci cmplw cr0, r3, r0 258c2ecf20Sopenharmony_ci bdnzt eq, 1b 268c2ecf20Sopenharmony_ci bne 5f 278c2ecf20Sopenharmony_ci3: andi. r3, r5, 3 288c2ecf20Sopenharmony_ci beqlr 298c2ecf20Sopenharmony_ci cmplwi cr1, r3, 2 308c2ecf20Sopenharmony_ci blt- cr1, 4f 318c2ecf20Sopenharmony_ci lhzx r3, r6, r7 328c2ecf20Sopenharmony_ci lhzx r0, r4, r7 338c2ecf20Sopenharmony_ci addi r7, r7, 2 348c2ecf20Sopenharmony_ci subf. r3, r0, r3 358c2ecf20Sopenharmony_ci beqlr cr1 368c2ecf20Sopenharmony_ci bnelr 378c2ecf20Sopenharmony_ci4: lbzx r3, r6, r7 388c2ecf20Sopenharmony_ci lbzx r0, r4, r7 398c2ecf20Sopenharmony_ci subf. r3, r0, r3 408c2ecf20Sopenharmony_ci blr 418c2ecf20Sopenharmony_ci5: li r3, 1 428c2ecf20Sopenharmony_ci bgtlr 438c2ecf20Sopenharmony_ci li r3, -1 448c2ecf20Sopenharmony_ci blr 458c2ecf20Sopenharmony_ciEXPORT_SYMBOL(memcmp) 46