repo.or.cz
/
neatlibc.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
regex: updates from neatvi
[neatlibc.git]
/
arm
/
string.s
blob
f45d4ad8da34aab1fb9e1431f9ee1e02ed61a204
1
2
.global memcpy
3
memcpy
:
4
mov
r12
,
r0
5
.loop:
6
subs
r2
,
r2
,
#1
7
bmi
.ret
8
ldrb
r3
, [
r1
],
#1
9
strb
r3
, [
r0
],
#1
10
b
.loop
11
.ret:
12
mov
r0
,
r12
13
mov pc
,
lr
14
15
.global memset
16
memset
:
17
mov
r12
,
r0
18
.loop:
19
subs
r2
,
r2
,
#1
20
bmi
.ret
21
strb
r1
, [
r0
],
#1
22
b
.loop
23
.ret:
24
mov
r0
,
r12
25
mov pc
,
lr
26
27
.global memmove
28
memmove
:
29
mov
r12
,
r0
30
cmp
r0
,
r1
31
ble
.fw
32
add
r3
,
r1
,
r2
33
cmp
r0
,
r3
34
bgt
.fw
35
36
@ copying the memory in reverse order
37
add
r0
,
r0
,
r2
38
add
r1
,
r1
,
r2
39
.bw:
40
subs
r2
,
r2
,
#1
41
bmi
.ret
42
ldrb
r3
, [
r1
,
#-1]!
43
strb
r3
, [
r0
,
#-1]!
44
b
.bw
45
.fw:
46
subs
r2
,
r2
,
#1
47
bmi
.ret
48
ldrb
r3
, [
r1
],
#1
49
strb
r3
, [
r0
],
#1
50
b
.fw
51
.ret:
52
mov
r0
,
r12
53
mov pc
,
lr
54
55
.global memchr
56
memchr
:
57
subs
r2
,
r2
,
#1
58
bmi
.failed
59
ldrb
r3
, [
r0
],
#1
60
cmp
r3
,
r1
61
bne
memchr
62
sub
r0
,
r0
,
#1
63
b
.ret
64
.failed:
65
mov
r0
,
#0
66
.ret:
67
mov pc
,
lr
68
69
.global memrchr
70
memrchr
:
71
mov
r12
,
#0
72
.loop:
73
subs
r2
,
r2
,
#1
74
bmi
.ret
75
ldrb
r3
, [
r0
],
#1
76
cmp
r3
,
r1
77
subeq
r12
,
r0
,
#1
78
b
.loop
79
.ret:
80
mov
r0
,
r12
81
mov pc
,
lr
82
83
.global memcmp
84
memcmp
:
85
subs
r2
,
r2
,
#1
86
bmi
.match
87
ldrb
r3
, [
r0
],
#1
88
ldrb
r12
, [
r1
],
#1
89
subs
r3
,
r3
,
r12
90
movne
r0
,
r3
91
bne
.ret
92
b
memcmp
93
.match:
94
mov
r0
,
#0
95
.ret:
96
mov pc
,
lr
97
98
.global strlen
99
strlen
:
100
mov
r2
,
r0
101
.loop:
102
ldrb
r1
, [
r0
],
#1
103
tst
r1
,
r1
104
bne
.loop
105
sub
r0
,
r0
,
r2
106
sub
r0
,
r0
,
#1
107
mov pc
,
lr
108
109
.global strchr
110
strchr
:
111
ldrb
r2
, [
r0
],
#1
112
cmp
r1
,
r2
113
subeq
r0
,
r0
,
#1
114
beq
.ret
115
tst
r2
,
r2
116
bne
strchr
117
mov
r0
,
#0
118
.ret:
119
mov pc
,
lr
120
121
.global strrchr
122
strrchr
:
123
mov
r3
,
#0
124
.loop:
125
ldrb
r2
, [
r0
],
#1
126
cmp
r1
,
r2
127
subeq
r3
,
r0
,
#1
128
tst
r2
,
r2
129
bne
.loop
130
.ret:
131
mov
r0
,
r3
132
mov pc
,
lr
133
134
.global strcmp
135
strcmp
:
136
ldrb
r2
, [
r0
],
#1
137
ldrb
r3
, [
r1
],
#1
138
cmp
r2
,
#1
139
cmpcs
r2
,
r3
140
beq
strcmp
141
sub
r0
,
r2
,
r3
142
mov pc
,
lr
143
144
.global strcpy
145
strcpy
:
146
mov
r3
,
r0
147
.loop:
148
ldrb
r2
, [
r1
],
#1
149
strb
r2
, [
r0
],
#1
150
tst
r2
,
r2
151
bne
.loop
152
mov
r0
,
r3
153
.ret:
154
mov pc
,
lr
155
156
.global strncmp
157
strncmp
:
158
mov
r12
,
r2
159
.loop:
160
subs
r12
,
r12
,
#1
161
movmi
r0
,
#0
162
bmi
.ret
163
ldrb
r2
, [
r0
],
#1
164
ldrb
r3
, [
r1
],
#1
165
cmp
r2
,
#1
166
cmpcs
r2
,
r3
167
beq
.loop
168
sub
r0
,
r2
,
r3
169
.ret:
170
mov pc
,
lr