Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 
0003 /*
0004  * memcmp for PowerPC32
0005  *
0006  * Copyright (C) 1996 Paul Mackerras.
0007  *
0008  */
0009 
0010 #include <asm/ppc_asm.h>
0011 #include <asm/export.h>
0012 
0013     .text
0014 
0015 _GLOBAL(memcmp)
0016     srawi.  r7, r5, 2       /* Divide len by 4 */
0017     mr  r6, r3
0018     beq-    3f
0019     mtctr   r7
0020     li  r7, 0
0021 1:  lwzx    r3, r6, r7
0022     lwzx    r0, r4, r7
0023     addi    r7, r7, 4
0024     cmplw   cr0, r3, r0
0025     bdnzt   eq, 1b
0026     bne 5f
0027 3:  andi.   r3, r5, 3
0028     beqlr
0029     cmplwi  cr1, r3, 2
0030     blt-    cr1, 4f
0031     lhzx    r3, r6, r7
0032     lhzx    r0, r4, r7
0033     addi    r7, r7, 2
0034     subf.   r3, r0, r3
0035     beqlr   cr1
0036     bnelr
0037 4:  lbzx    r3, r6, r7
0038     lbzx    r0, r4, r7
0039     subf.   r3, r0, r3
0040     blr
0041 5:  li  r3, 1
0042     bgtlr
0043     li  r3, -1
0044     blr
0045 EXPORT_SYMBOL(memcmp)