stdio: conversion specifiers should immediately follow length modifiers
[neatlibc.git] / arm / string.s
blob58cb1536b021447ecd58d30c5309f31289bf3184
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
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
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
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
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 b .ret
63 .failed:
64 mov r0, #0
65 .ret:
66 mov pc, lr
68 .global memcmp
69 memcmp:
70 subs r2, r2, #1
71 bmi .match
72 ldrb r3, [r0], #1
73 ldrb r12, [r1], #1
74 subs r3, r3, r12
75 movne r0, r3
76 bne .ret
77 b memcmp
78 .match:
79 mov r0, #0
80 .ret:
81 mov pc, lr
83 .global strlen
84 strlen:
85 mov r2, r0
86 .loop:
87 ldrb r1, [r0], #1
88 tst r1, r1
89 bne .loop
90 sub r0, r0, r2
91 sub r0, r0, #1
92 mov pc, lr
94 .global strchr
95 strchr:
96 ldrb r2, [r0], #1
97 cmp r1, r2
98 subeq r0, r0, #1
99 beq .ret
100 tst r2, r2
101 bne strchr
102 mov r0, #0
103 .ret:
104 mov pc, lr
106 .global strcmp
107 strcmp:
108 ldrb r2, [r0], #1
109 ldrb r3, [r1], #1
110 cmp r2, #1
111 cmpcs r2, r3
112 beq strcmp
113 sub r0, r2, r3
114 mov pc, lr
116 .global strcpy
117 strcpy:
118 mov r3, r0
119 .loop:
120 ldrb r2, [r1], #1
121 strb r2, [r0], #1
122 tst r2, r2
123 bne .loop
124 mov r0, r3
125 .ret:
126 mov pc, lr