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
|