]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/services/diagnosis/v2_0/src/memory/routine.S
Initial revision
[karo-tx-redboot.git] / packages / services / diagnosis / v2_0 / src / memory / routine.S
1         .text
2 /*
3  * void diagnosis_mem_read_block(unsigned long start, int size)
4  */
5         .global diagnosis_mem_read_block
6 diagnosis_mem_read_block:
7         stmdb sp!, {r2 - r9}
8         add r1, r1, r0 
9 1:      cmp r0, r1
10         ldmloia r0!, {r2-r9}
11         blo 1b
12         ldmia sp!, {r2 - r9}    
13         mov pc, lr
14 /*
15  * void diagnosis_mem_write_block(unsigned long start, int size)
16  */
17         .global diagnosis_mem_write_block
18 diagnosis_mem_write_block:      
19         stmdb sp!, {r2 - r9}
20         add r1, r1, r0
21 1:      cmp r0, r1
22         stmloia r0!, {r2 - r9}
23         blo 1b
24         ldmia sp!, {r2 - r9}    
25         mov pc, lr
26 /*
27  * int diagnosis_mem_copy_block(unsigned long start, unsigned long dest, int size)
28  */
29         .global diagnosis_mem_copy_block
30 diagnosis_mem_copy_block:
31         stmdb sp!, {r3 - r11}
32         stmdb sp!, {r0, r1}
33         add r11, r1, r2
34 1:      cmp r1, r11
35         ldmloia r0!, {r3-r10}
36         stmloia r1!, {r3-r10}
37         blo 1b
38         ldmia sp!, {r0, r1}
39 1:      cmp r1, r11
40         movhs r0, #0
41         bhs 2f
42         ldrlo r3, [r0], #4      
43         ldrlo r4, [r1], #4
44         cmp r3, r4
45         beq 1b
46         mov r0, #-1     
47 2:      ldmia sp!, {r3 - r11}
48         mov pc, lr