2 * linux/arch/arm/lib/segment.S
4 * Copyright (C) 1995, 1996 Russell King
5 * Except memcpy/memmove routine.
8 #include <asm/assembler.h>
9 #include <linux/linkage.h>
20 stmfd sp!,{r4-r9,fp,ip,lr,pc} ;\
24 LOADREGS(ea, fp, {r4 - r9, fp, sp, pc})
27 LOADREGS(eqea, fp, {r4 - r9, fp, sp, pc})
29 # Prototype: void memcpy(void *to,const void *from,unsigned long n);
30 # ARM3: cant use memcopy here!!!
48 2: ldmia r1!,{r3 - r9, ip}
49 stmia r0!,{r3 - r9, ip}
53 ldmgeia r1!, {r3 - r6}
54 stmgeia r0!, {r3 - r6}
57 4: ldmgeia r1!, {r3 - r5}
58 stmgeia r0!, {r3 - r5}
102 9: mov r3, r7, lsr #8
104 orr r3, r3, r4, lsl #24
106 orr r4, r4, r5, lsl #24
108 orr r5, r5, r6, lsl #24
110 orr r6, r6, r7, lsl #24
116 10: mov r3, r7, lsr #8
118 orr r3, r3, r7, lsl #24
128 12: mov r3, r7, lsr #16
130 orr r3, r3, r4, lsl #16
132 orr r4, r4, r5, lsl #16
134 orr r5, r5, r6, lsl #16
136 orr r6, r6, r7,LSL#16
142 13: mov r3, r7, lsr #16
144 orr r3, r3, r7, lsl #16
154 16: mov r3, r7, lsr #24
156 orr r3, r3, r4, lsl #8
158 orr r4, r4, r5, lsl #8
160 orr r5, r5, r6, lsl #8
162 orr r6, r6, r7, lsl #8
168 17: mov r3, r7, lsr #24
170 orr r3, r3, r7, lsl#8
191 21: ldmdb r1!, {r3 - r9, ip}
192 stmdb r0!, {r3 - r9, ip}
196 ldmgedb r1!, {r3 - r6}
197 stmgedb r0!, {r3 - r6}
200 ldmgedb r1!, {r3 - r5}
201 stmgedb r0!, {r3 - r5}
208 ldmgedb r1!, {r3, r4}
209 stmgedb r0!, {r3, r4}
217 ldrgeb r3, [r1, #-1]!
218 strgeb r3, [r0, #-1]!
219 ldrgtb r3, [r1, #-1]!
220 strgtb r3, [r0, #-1]!
226 ldrgeb r3, [r1, #-1]!
227 strgeb r3, [r0, #-1]!
228 ldrgtb r3, [r1, #-1]!
229 strgtb r3, [r0, #-1]!
243 27: mov r7, r3, lsl #8
244 ldmdb r1!, {r3, r4, r5, r6}
245 orr r7, r7, r6, lsr #24
247 orr r6, r6, r5, lsr #24
249 orr r5, r5, r4, lsr #24
251 orr r4, r4, r3, lsr #24
252 stmdb r0!, {r4, r5, r6, r7}
257 28: mov ip, r3, lsl #8
259 orr ip, ip, r3, lsr #24
269 31: mov r7, r3, lsl #16
270 ldmdb r1!, {r3, r4, r5, r6}
271 orr r7, r7, r6, lsr #16
273 orr r6, r6, r5, lsr #16
275 orr r5, r5, r4, lsr #16
277 orr r4, r4, r3, lsr #16
278 stmdb r0!, {r4, r5, r6, r7}
283 32: mov ip, r3, lsl #16
285 orr ip, ip, r3, lsr #16
295 35: mov r7, r3, lsl #24
296 ldmdb r1!, {r3, r4, r5, r6}
297 orr r7, r7, r6, lsr #8
299 orr r6, r6, r5, lsr #8
301 orr r5, r5, r4, lsr #8
303 orr r4, r4, r3, lsr #8
304 stmdb r0!, {r4, r5, r6, r7}
309 36: mov ip, r3, lsl #24
311 orr ip, ip, r3, lsr #8