OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [arch/] [armnommu/] [lib/] [segment.S] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1622 jcastillo
/*
2
 * linux/arch/arm/lib/segment.S
3
 *
4
 * Copyright (C) 1995, 1996 Russell King
5
 * Except memcpy/memmove routine.
6
 */
7
 
8
#include 
9
                .text
10
#define ENTER   \
11
                MOV     ip,sp   ;\
12
                STMFD   sp!,{r4-r9,fp,ip,lr,pc} ;\
13
                SUB     fp,ip,#4
14
 
15
#define EXIT    \
16
                LOADREGS(ea, fp, {r4 - r9, fp, sp, pc})
17
 
18
#define EXITEQ  \
19
                LOADREGS(eqea, fp, {r4 - r9, fp, sp, pc})
20
 
21
# Prototype: void memcpy_tofs(void *to,const void *from,unsigned long n);
22
 
23
Lmtfs_dest_not_aligned:
24
                rsb     ip, ip, #4
25
                cmp     ip, #2
26
                ldrb    r3, [r1], #1
27
                strbt   r3, [r0], #1
28
                ldrgeb  r3, [r1], #1
29
                strgebt r3, [r0], #1
30
                ldrgtb  r3, [r1], #1
31
                strgtbt r3, [r0], #1
32
                sub     r2, r2, ip
33
                b       Lmtfs_dest_aligned
34
 
35
                .global ___memcpy_tofs,__memcpy_tofs
36
__memcpy_tofs:
37
___memcpy_tofs:
38
                cmp     r0, #0x02000000                 @ PHYS check
39
                bge     _memcpy_fromfs
40
                stmfd   sp!, {lr}
41
                cmp     r2, #4
42
                blt     Lmtfs_not_enough
43
                ands    ip, r0, #3
44
                bne     Lmtfs_dest_not_aligned
45
Lmtfs_dest_aligned:
46
                stmfd   sp!, {r4 - r7}
47
                ands    ip, r1, #3
48
                bne     Lmtfs_src_not_aligned
49
/*
50
 * Seeing as there has to be at least 8 bytes to copy, we can
51
 * copy one word, and force a user-mode page fault...
52
 */
53
 
54
Lmtfs_0fupi:    subs    r2, r2, #4
55
                addmi   ip, r2, #4
56
                bmi     Lmtfs_0nowords
57
                ldr     r3, [r1], #4
58
                strt    r3, [r0], #4
59
                mov     ip, r0, lsl #17
60
                rsb     ip, ip, #0
61
                movs    ip, ip, lsr #17
62
                beq     Lmtfs_0fupi
63
/*
64
 * ip = max no. of bytes to copy before needing another "strt" insn
65
 */
66
                cmp     r2, ip
67
                movlt   ip, r2
68
                sub     r2, r2, ip
69
                subs    ip, ip, #32
70
                blt     Lmtfs_0rem8lp
71
 
72
Lmtfs_0cpy8lp:  ldmia   r1!, {r3 - r6}
73
                stmia   r0!, {r3 - r6}
74
                ldmia   r1!, {r3 - r6}
75
                stmia   r0!, {r3 - r6}
76
                subs    ip, ip, #32
77
                bpl     Lmtfs_0cpy8lp
78
Lmtfs_0rem8lp:  cmn     ip, #16
79
                ldmgeia r1!, {r3 - r6}
80
                stmgeia r0!, {r3 - r6}
81
                tst     ip, #8
82
                ldmneia r1!, {r3 - r4}
83
                stmneia r0!, {r3 - r4}
84
                tst     ip, #4
85
                ldrne   r3, [r1], #4
86
                strnet  r3, [r0], #4
87
                ands    ip, ip, #3
88
                beq     Lmtfs_0fupi
89
Lmtfs_0nowords: ldmfd   sp!, {r4 - r7}
90
                teq     ip, #0
91
                LOADREGS(eqfd,sp!,{pc})
92
Lmtfs_nowords:  cmp     ip, #2
93
                ldrb    r3, [r1], #1
94
                strbt   r3, [r0], #1
95
                ldrgeb  r3, [r1], #1
96
                strgebt r3, [r0], #1
97
                ldrgtb  r3, [r1], #1
98
                strgtbt r3, [r0], #1
99
                LOADREGS(fd,sp!,{pc})
100
 
101
Lmtfs_not_enough:
102
                movs    ip, r2
103
                bne     Lmtfs_nowords
104
                LOADREGS(fd,sp!,{pc})
105
 
106
Lmtfs_src_not_aligned:
107
                bic     r1, r1, #3
108
                ldr     r7, [r1], #4
109
                cmp     ip, #2
110
                bgt     Lmtfs_3fupi
111
                beq     Lmtfs_2fupi
112
Lmtfs_1fupi:    subs    r2, r2, #4
113
                addmi   ip, r2, #4
114
                bmi     Lmtfs_1nowords
115
                mov     r3, r7, lsr #8
116
                ldr     r7, [r1], #4
117
                orr     r3, r3, r7, lsl #24
118
                strt    r3, [r0], #4
119
                mov     ip, r0, lsl #17
120
                rsb     ip, ip, #0
121
                movs    ip, ip, lsr #17
122
                beq     Lmtfs_1fupi
123
                cmp     r2, ip
124
                movlt   ip, r2
125
                sub     r2, r2, ip
126
                subs    ip, ip, #16
127
                blt     Lmtfs_1rem8lp
128
 
129
Lmtfs_1cpy8lp:  mov     r3, r7, lsr #8
130
                ldmia   r1!, {r4 - r7}
131
                orr     r3, r3, r4, lsl #24
132
                mov     r4, r4, lsr #8
133
                orr     r4, r4, r5, lsl #24
134
                mov     r5, r5, lsr #8
135
                orr     r5, r5, r6, lsl #24
136
                mov     r6, r6, lsr #8
137
                orr     r6, r6, r7, lsl #24
138
                stmia   r0!, {r3 - r6}
139
                subs    ip, ip, #16
140
                bpl     Lmtfs_1cpy8lp
141
Lmtfs_1rem8lp:  tst     ip, #8
142
                movne   r3, r7, lsr #8
143
                ldmneia r1!, {r4, r7}
144
                orrne   r3, r3, r4, lsl #24
145
                movne   r4, r4, lsr #8
146
                orrne   r4, r4, r7, lsl #24
147
                stmneia r0!, {r3 - r4}
148
                tst     ip, #4
149
                movne   r3, r7, lsr #8
150
                ldrne   r7, [r1], #4
151
                orrne   r3, r3, r7, lsl #24
152
                strnet  r3, [r0], #4
153
                ands    ip, ip, #3
154
                beq     Lmtfs_1fupi
155
Lmtfs_1nowords: teq     ip, #0
156
                LOADREGS(eqfd,sp!,{r4 - r7, pc})
157
                mov     r3, r7, lsr #8
158
                cmp     ip, #2
159
                strbt   r3, [r0], #1
160
                movge   r3, r3, lsr #8
161
                strgebt r3, [r0], #1
162
                movgt   r3, r3, lsr #8
163
                strgtbt r3, [r0], #1
164
                LOADREGS(fd,sp!, {r4 - r7, pc})
165
 
166
Lmtfs_2fupi:    subs    r2, r2, #4
167
                addmi   ip, r2, #4
168
                bmi     Lmtfs_2nowords
169
                mov     r3, r7, lsr #16
170
                ldr     r7, [r1], #4
171
                orr     r3, r3, r7, lsl #16
172
                strt    r3, [r0], #4
173
                mov     ip, r0, lsl #17
174
                rsb     ip, ip, #0
175
                movs    ip, ip, lsr #17
176
                beq     Lmtfs_2fupi
177
                cmp     r2, ip
178
                movlt   ip, r2
179
                sub     r2, r2, ip
180
                subs    ip, ip, #16
181
                blt     Lmtfs_2rem8lp
182
 
183
Lmtfs_2cpy8lp:  mov     r3, r7, lsr #16
184
                ldmia   r1!, {r4 - r7}
185
                orr     r3, r3, r4, lsl #16
186
                mov     r4, r4, lsr #16
187
                orr     r4, r4, r5, lsl #16
188
                mov     r5, r5, lsr #16
189
                orr     r5, r5, r6, lsl #16
190
                mov     r6, r6, lsr #16
191
                orr     r6, r6, r7, lsl #16
192
                stmia   r0!, {r3 - r6}
193
                subs    ip, ip, #16
194
                bpl     Lmtfs_2cpy8lp
195
Lmtfs_2rem8lp:  tst     ip, #8
196
                movne   r3, r7, lsr #16
197
                ldmneia r1!, {r4, r7}
198
                orrne   r3, r3, r4, lsl #16
199
                movne   r4, r4, lsr #16
200
                orrne   r4, r4, r7, lsl #16
201
                stmneia r0!, {r3 - r4}
202
                tst     ip, #4
203
                movne   r3, r7, lsr #16
204
                ldrne   r7, [r1], #4
205
                orrne   r3, r3, r7, lsl #16
206
                strnet  r3, [r0], #4
207
                ands    ip, ip, #3
208
                beq     Lmtfs_2fupi
209
Lmtfs_2nowords: teq     ip, #0
210
                LOADREGS(eqfd,sp!,{r4 - r7, pc})
211
                mov     r3, r7, lsr #16
212
                cmp     ip, #2
213
                strbt   r3, [r0], #1
214
                movge   r3, r3, lsr #8
215
                strgebt r3, [r0], #1
216
                ldrgtb  r3, [r1], #0
217
                strgtbt r3, [r0], #1
218
                LOADREGS(fd,sp!,{r4 - r7, pc})
219
 
220
Lmtfs_3fupi:    subs    r2, r2, #4
221
                addmi   ip, r2, #4
222
                bmi     Lmtfs_3nowords
223
                mov     r3, r7, lsr #24
224
                ldr     r7, [r1], #4
225
                orr     r3, r3, r7, lsl #8
226
                strt    r3, [r0], #4
227
                mov     ip, r0, lsl #17
228
                rsb     ip, ip, #0
229
                movs    ip, ip, lsr #17
230
                beq     Lmtfs_3fupi
231
                cmp     r2, ip
232
                movlt   ip, r2
233
                sub     r2, r2, ip
234
                subs    ip, ip, #16
235
                blt     Lmtfs_3rem8lp
236
 
237
Lmtfs_3cpy8lp:  mov     r3, r7, lsr #24
238
                ldmia   r1!, {r4 - r7}
239
                orr     r3, r3, r4, lsl #8
240
                mov     r4, r4, lsr #24
241
                orr     r4, r4, r5, lsl #8
242
                mov     r5, r5, lsr #24
243
                orr     r5, r5, r6, lsl #8
244
                mov     r6, r6, lsr #24
245
                orr     r6, r6, r7, lsl #8
246
                stmia   r0!, {r3 - r6}
247
                subs    ip, ip, #16
248
                bpl     Lmtfs_3cpy8lp
249
Lmtfs_3rem8lp:  tst     ip, #8
250
                movne   r3, r7, lsr #24
251
                ldmneia r1!, {r4, r7}
252
                orrne   r3, r3, r4, lsl #8
253
                movne   r4, r4, lsr #24
254
                orrne   r4, r4, r7, lsl #8
255
                stmneia r0!, {r3 - r4}
256
                tst     ip, #4
257
                movne   r3, r7, lsr #24
258
                ldrne   r7, [r1], #4
259
                orrne   r3, r3, r7, lsl #8
260
                strnet  r3, [r0], #4
261
                ands    ip, ip, #3
262
                beq     Lmtfs_3fupi
263
Lmtfs_3nowords: teq     ip, #0
264
                LOADREGS(eqfd,sp!,{r4 - r7, pc})
265
                mov     r3, r7, lsr #24
266
                cmp     ip, #2
267
                strbt   r3, [r0], #1
268
                ldrge   r3, [r1], #0
269
                strgebt r3, [r0], #1
270
                movgt   r3, r3, lsr #8
271
                strgtbt r3, [r0], #1
272
                LOADREGS(fd,sp!, {r4 - r7, pc})
273
 
274
# Prototype: void memcpy_fromfs(void *to,const void *from,unsigned long n);
275
# ARM3: cant use memcopy here!!!
276
 
277
                .global _memcpy,memcpy
278
                .global _memmove,memmove
279
                .global _memcpy_fromfs,memcpy_fromfs
280
_memcpy:
281
_memmove:
282
_memcpy_fromfs:
283
memcpy:
284
memmove:
285
memcpy_fromfs:
286
 
287
                ENTER
288
                cmp     r1, r0
289
                bcc     Lother_copy
290
                subs    r2, r2, #4
291
                blt     Lup_no_double_words
292
                ands    ip, r0, #3
293
                bne     Lup_dest_not_aligned
294
                ands    ip, r1, #3
295
                bne     Lup_src_not_aligned
296
 
297
Lup_rest:       subs    r2, r2, #8
298
                blt     Lup_cpy_2_lp
299
                subs    r2, r2, #0x14
300
                blt     Lup_not_long_copy
301
 
302
Lup_cpy_8_lp:   ldmia   r1!,{r3 - r9, ip}
303
                stmia   r0!,{r3 - r9, ip}
304
                subs    r2, r2, #32
305
                bge     Lup_cpy_8_lp
306
                cmn     r2, #16
307
                ldmgeia r1!, {r3 - r6}
308
                stmgeia r0!, {r3 - r6}
309
                subge   r2, r2, #0x10
310
Lup_not_long_copy:
311
                adds    r2, r2, #0x14
312
 
313
Lup_cpy_3_lp:   ldmgeia r1!, {r3 - r5}
314
                stmgeia r0!, {r3 - r5}
315
                subges  r2, r2, #12
316
                bge     Lup_cpy_3_lp
317
 
318
Lup_cpy_2_lp:   adds    r2, r2, #8
319
                blt     Lup_no_double_words
320
                subs    r2, r2, #4
321
                ldrlt   r3, [r1], #4
322
                strlt   r3, [r0], #4
323
                ldmgeia r1!, {r3, r4}
324
                stmgeia r0!, {r3, r4}
325
                subge   r2, r2, #4
326
 
327
Lup_no_double_words:
328
                adds    r2, r2, #4
329
                EXITEQ
330
                cmp     r2, #2
331
                ldrb    r3, [r1], #1
332
                strb    r3, [r0], #1
333
                ldrgeb  r3, [r1], #1
334
                strgeb  r3, [r0], #1
335
                ldrgtb  r3, [r1], #1
336
                strgtb  r3, [r0], #1
337
                EXIT
338
Lup_dest_not_aligned:
339
                rsb     ip, ip, #4
340
                cmp     ip, #2
341
                ldrb    r3, [r1], #1
342
                strb    r3, [r0], #1
343
                ldrgeb  r3, [r1], #1
344
                strgeb  r3, [r0], #1
345
                ldrgtb  r3, [r1], #1
346
                strgtb  r3, [r0], #1
347
                subs    r2, r2, ip
348
                blt     Lup_no_double_words
349
                ands    ip, r1, #3
350
                beq     Lup_rest
351
Lup_src_not_aligned:
352
                bic     r1, r1, #3
353
                ldr     r7, [r1], #4
354
                cmp     ip, #2
355
                bgt     Lup_cpy_4_3
356
                beq     Lup_cpy_4_2
357
                cmp     r2, #12
358
                blt     Lup_cpy_x_1_lp
359
                sub     r2, r2, #12
360
 
361
Lup_cpy_4_1_lp: mov     r3, r7, lsr #8
362
                ldmia   r1!, {r4 - r7}
363
                orr     r3, r3, r4, lsl #24
364
                mov     r4, r4, lsr #8
365
                orr     r4, r4, r5, lsl #24
366
                mov     r5, r5, lsr #8
367
                orr     r5, r5, r6, lsl #24
368
                mov     r6, r6, lsr #8
369
                orr     r6, r6, r7, lsl #24
370
                stmia   r0!, {r3 - r6}
371
                subs    r2, r2, #16
372
                bge     Lup_cpy_4_1_lp
373
                adds    r2, r2, #12
374
                blt     Lup_rest1
375
 
376
Lup_cpy_x_1_lp: mov     r3, r7, lsr #8
377
                ldr     r7, [r1], #4
378
                orr     r3, r3, r7, lsl #24
379
                str     r3, [r0], #4
380
                subs    r2, r2, #4
381
                bge     Lup_cpy_x_1_lp
382
 
383
Lup_rest1:      sub     r1, r1, #3
384
                b       Lup_no_double_words
385
 
386
Lup_cpy_4_2:    cmp     r2, #12
387
                blt     Lup_cpy_x_2_lp
388
                sub     r2, r2, #12
389
 
390
Lup_cpy_4_2_lp: mov     r3, r7, lsr #16
391
                ldmia   r1!, {r4 - r7}
392
                orr     r3, r3, r4, lsl #16
393
                mov     r4, r4, lsr #16
394
                orr     r4, r4, r5, lsl #16
395
                mov     r5, r5, lsr #16
396
                orr     r5, r5, r6, lsl #16
397
                mov     r6, r6, lsr #16
398
                orr     r6, r6, r7,LSL#16
399
                stmia   r0!, {r3 - r6}
400
                subs    r2, r2, #16
401
                bge     Lup_cpy_4_2_lp
402
                adds    r2, r2, #12
403
                blt     Lup_rest2
404
 
405
Lup_cpy_x_2_lp: mov     r3, r7, lsr #16
406
                ldr     r7, [r1], #4
407
                orr     r3, r3, r7, lsl #16
408
                str     r3, [r0], #4
409
                subs    r2, r2, #4
410
                bge     Lup_cpy_x_2_lp
411
 
412
Lup_rest2:      sub     r1, r1, #2
413
                b       Lup_no_double_words
414
 
415
Lup_cpy_4_3:    cmp     r2, #12
416
                blt     Lup_cpy_x_3_lp
417
                sub     r2, r2, #12
418
 
419
Lup_cpy_4_3_lp: mov     r3, r7, lsr #24
420
                ldmia   r1!,{r4 - r7}
421
                orr     r3, r3, r4, lsl #8
422
                mov     r4, r4, lsr #24
423
                orr     r4, r4, r5, lsl #8
424
                mov     r5, r5, lsr #24
425
                orr     r5, r5, r6, lsl #8
426
                mov     r6, r6, lsr #24
427
                orr     r6, r6, r7, lsl #8
428
                stmia   r0!, {r3 - r6}
429
                subs    r2, r2, #16
430
                bge     Lup_cpy_4_3_lp
431
                adds    r2, r2, #12
432
                blt     Lup_rest3
433
 
434
Lup_cpy_x_3_lp: mov     r3, r7, lsr #24
435
                ldr     r7, [r1], #4
436
                orr     r3, r3, r7, lsl#8
437
                str     r3, [r0], #4
438
                subs    r2, r2, #4
439
                bge     Lup_cpy_x_3_lp
440
 
441
Lup_rest3:      sub     r1, r1, #1
442
                b       Lup_no_double_words
443
 
444
 
445
Lother_copy:    add     r1, r1, r2
446
                add     r0, r0, r2
447
                subs    r2, r2, #4
448
                blt     Ldown_no_double_words
449
                ands    ip, r0, #3
450
                bne     Ldown_dest_not_aligned
451
                ands    ip, r1, #3
452
                bne     Ldown_src_not_aligned
453
 
454
Ldown_rest:
455
                subs    r2, r2, #8
456
                blt     Ldown_cpy_2_lp
457
                subs    r2, r2, #0x14
458
                blt     Ldown_not_long_copy
459
Ldown_cpy_8_lp:
460
                ldmdb   r1!, {r3 - r9, ip}
461
                stmdb   r0!, {r3 - r9, ip}
462
                subs    r2, r2, #32
463
                bge     Ldown_cpy_8_lp
464
 
465
Ldown_not_long_copy:
466
                cmn     r2, #16
467
                ldmgedb r1!, {r3 - r6}
468
                stmgedb r0!, {r3 - r6}
469
                subge   r2, r2, #16
470
                adds    r2, r2, #20
471
                ldmgedb r1!, {r3 - r5}
472
                stmgedb r0!, {r3 - r5}
473
                subge   r2, r2, #12
474
Ldown_cpy_2_lp:
475
                adds    r2, r2, #8
476
                blt     Ldown_no_double_words
477
                subs    r2, r2, #4
478
                ldrlt   r3, [r1, #-4]!
479
                strlt   r3, [r0, #-4]!
480
                ldmgedb r1!, {r3, r4}
481
                stmgedb r0!, {r3, r4}
482
                subge   r2, r2, #4
483
 
484
Ldown_no_double_words:
485
                adds    r2, r2, #4
486
                EXITEQ
487
                cmp     r2, #2
488
                ldrb    r3, [r1, #-1]!
489
                strb    r3, [r0, #-1]!
490
                ldrgeb  r3, [r1, #-1]!
491
                strgeb  r3, [r0, #-1]!
492
                ldrgtb  r3, [r1, #-1]!
493
                strgtb  r3, [r0, #-1]!
494
                EXIT
495
 
496
Ldown_dest_not_aligned:
497
                CMP     ip,#2
498
                LDRB    r3,[r1,#-1]!
499
                STRB    r3,[r0,#-1]!
500
                LDRGEB  r3,[r1,#-1]!
501
                STRGEB  r3,[r0,#-1]!
502
                LDRGTB  r3,[r1,#-1]!
503
                STRGTB  r3,[r0,#-1]!
504
                SUBS    r2,r2,ip
505
                BLT     Ldown_no_double_words
506
                ANDS    ip,r1,#3
507
                BEQ     Ldown_rest
508
 
509
Ldown_src_not_aligned:
510
                BIC     r1,r1,#3
511
                LDR     r3,[r1],#0
512
                CMP     ip,#2
513
                BLT     Ldown_cpy_4_3
514
                BEQ     Ldown_cpy_4_2
515
                CMP     r2,#12
516
                BLT     Ldown_cpy_x_1_lp
517
                SUB     r2,r2,#12
518
 
519
Ldown_cpy_4_1_lp:
520
                MOV     r7,r3,LSL#8
521
                LDMDB   r1!,{r3,r4,r5,r6}
522
                ORR     r7,r7,r6,LSR#24
523
                MOV     r6,r6,LSL#8
524
                ORR     r6,r6,r5,LSR#24
525
                MOV     r5,r5,LSL#8
526
                ORR     r5,r5,r4,LSR#24
527
                MOV     r4,r4,LSL#8
528
                ORR     r4,r4,r3,LSR#24
529
                STMDB   r0!,{r4,r5,r6,r7}
530
                SUBS    r2,r2,#16
531
                BGE     Ldown_cpy_4_1_lp
532
                ADDS    r2,r2,#12
533
                BLT     Ldown_rest1
534
 
535
Ldown_cpy_x_1_lp:
536
                MOV     ip,r3,LSL#8
537
                LDR     r3,[r1,#-4]!
538
                ORR     ip,ip,r3,LSR#24
539
                STR     ip,[r0,#-4]!
540
                SUBS    r2,r2,#4
541
                BGE     Ldown_cpy_x_1_lp
542
 
543
Ldown_rest1:
544
                ADD     r1,r1,#3
545
                B       Ldown_no_double_words
546
 
547
Ldown_cpy_4_2:
548
                CMP     r2,#12
549
                BLT     Ldown_cpy_x_2_lp
550
                SUB     r2,r2,#12
551
 
552
Ldown_cpy_4_2_lp:
553
                MOV     r7,r3,LSL#16
554
                LDMDB   r1!,{r3,r4,r5,r6}
555
                ORR     r7,r7,r6,LSR#16
556
                MOV     r6,r6,LSL#16
557
                ORR     r6,r6,r5,LSR#16
558
                MOV     r5,r5,LSL#16
559
                ORR     r5,r5,r4,LSR#16
560
                MOV     r4,r4,LSL#16
561
                ORR     r4,r4,r3,LSR#16
562
                STMDB   r0!,{r4,r5,r6,r7}
563
                SUBS    r2,r2,#16
564
                BGE     Ldown_cpy_4_2_lp
565
                ADDS    r2,r2,#12
566
                BLT     Ldown_rest2
567
 
568
Ldown_cpy_x_2_lp:
569
                MOV     ip,r3,LSL#16
570
                LDR     r3,[r1,#-4]!
571
                ORR     ip,ip,r3,LSR#16
572
                STR     ip,[r0,#-4]!
573
                SUBS    r2,r2,#4
574
                BGE     Ldown_cpy_x_2_lp
575
 
576
Ldown_rest2:
577
                ADD     r1,r1,#2
578
                B       Ldown_no_double_words
579
 
580
Ldown_cpy_4_3:
581
                CMP     r2,#12
582
                BLT     Ldown_cpy_x_3_lp
583
                SUB     r2,r2,#12
584
 
585
Ldown_cpy_4_3_lp:
586
                MOV     r7,r3,LSL#24
587
                LDMDB   r1!,{r3,r4,r5,r6}
588
                ORR     r7,r7,r6,LSR#8
589
                MOV     r6,r6,LSL#24
590
                ORR     r6,r6,r5,LSR#8
591
                MOV     r5,r5,LSL#24
592
                ORR     r5,r5,r4,LSR#8
593
                MOV     r4,r4,LSL#24
594
                ORR     r4,r4,r3,LSR#8
595
                STMDB   r0!,{r4,r5,r6,r7}
596
                SUBS    r2,r2,#16
597
                BGE     Ldown_cpy_4_3_lp
598
                ADDS    r2,r2,#12
599
                BLT     Ldown_rest3
600
Ldown_cpy_x_3_lp:
601
                MOV     ip,r3,LSL#24
602
                LDR     r3,[r1,#-4]!
603
                ORR     ip,ip,r3,LSR#8
604
                STR     ip,[r0,#-4]!
605
                SUBS    r2,r2,#4
606
                BGE     Ldown_cpy_x_3_lp
607
Ldown_rest3:
608
                ADD     r1,r1,#1
609
                B       Ldown_no_double_words
610
 
611
                .align
612
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.