summaryrefslogtreecommitdiff
path: root/lib/libc/arch/ns32k/string/memcmp.S
blob: a0d4431c8f0adcb31e9978541c035909bc45bc0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*	$NetBSD: memcmp.S,v 1.3 1998/04/03 22:58:09 matthias Exp $	*/

/* 
 * Written by Matthias Pfaller, 1996
 * Public domain.
 */

#include <machine/asm.h>

#if defined(LIBC_SCCS)
	RCSID("$NetBSD: memcmp.S,v 1.3 1998/04/03 22:58:09 matthias Exp $")
#endif

/*
 * int
 * memcmp (const void *b1, const void *b2, size_t len)
 */
KENTRY(memcmp, 12)
	enter	[],0
	movd	B_ARG2,r0
	movd	B_ARG0,r1
	movd	B_ARG1,r2

	lshd	-2,r0
	cmpsd
	movqd	4,r0
	bne	1f
	movqd	3,r0
	andd	B_ARG2,r0
1:	cmpsb
	bne	3f
2:	exit	[]
	ret	ARGS

3:	movzbd	0(r1),r0
	movzbd	0(r2),r1
	subd	r1,r0
	exit	[]
	ret	ARGS