| 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 | /*
 * Copyright (C) 2004-2007 Atmel Corporation
 *
 * This file is subject to the terms and conditions of the GNU Lesser General
 * Public License.  See the file "COPYING.LIB" in the main directory of this
 * archive for more details.
 */
#include <features.h>
#define s1 r12
#define s2 r11
#define len r10
	.text
	.global memcmp
	.type	memcmp, @function
	.align	1
memcmp:
	sub	len, 4
	brlt	.Lless_than_4
1:	ld.w	r8, s1++
	ld.w	r9, s2++
	cp.w	r8, r9
	brne	.Lfound_word
	sub	len, 4
	brge	1b
.Lless_than_4:
	sub	len, -4
	reteq	0
1:	ld.ub	r8, s1++
	ld.ub	r9, s2++
	sub	r8, r9
	retne	r8
	sub	len, 1
	brgt	1b
	retal	0
.Lfound_word:
	mov	len, 4
2:	bfextu	r11, r9, 24, 8
	bfextu	r12, r8, 24, 8
	sub	r12, r11
	retne	r12
	lsl	r8, 8
	lsl	r9, 8
	sub	len, 1
	brne	2b
	retal	r12
	.size	memcmp, . - memcmp
libc_hidden_def(memcmp)
#ifdef __UCLIBC_SUSV3_LEGACY__
strong_alias(memcmp,bcmp)
#endif
 |