1/*- 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8#if defined(LIBC_SCCS) && !defined(lint) 9 .asciz "@(#)memcmp.s 8.1 (Berkeley) 06/04/93" 10#endif /* LIBC_SCCS and not lint */ 11 12/* int memcmp(s1, s2, n) */ 13 14#include "DEFS.h" 15 16ENTRY(memcmp, 0) 17 movl 4(ap),r1 /* r1 = s1 */ 18 movq 8(ap),r3 /* r3 = s2; r4 = n */ 19 movzwl $65535,r5 200: 21 cmpl r4,r5 22 jgtru 3f /* handle stupid cmpc3 limitation */ 23 cmpc3 r4,(r1),(r3) /* compare */ 24 beql 2f /* done if same (r0 = 0) */ 251: 26 movzbl (r1),r0 27 movzbl (r3),r2 28 subl2 r2,r0 /* return *s1 - *s2; s1,s2 unsigned chars */ 292: 30 ret 313: 32 subl2 r5,r4 /* do 64K; adjust count */ 33 cmpc3 r5,(r1),(r3) 34 jeql 0b /* loop if same */ 35 jbr 1b 36