support for zipped ISOs
[picodrive.git] / Pico / misc.s
CommitLineData
fa1e5e29 1
2@ vim:filetype=armasm
3
4
5.global memcpy16 @ unsigned short *dest, unsigned short *src, int count
6
7memcpy16:
8 eor r3, r0, r1
9 tst r3, #2
10 bne mcp16_cant_align
11
12 tst r0, #2
13 ldrneh r3, [r1], #2
14 subne r2, r2, #1
15 strneh r3, [r0], #2
16
17 subs r2, r2, #4
18 bmi mcp16_fin
19
20mcp16_loop:
21 ldmia r1!, {r3,r12}
22 subs r2, r2, #4
23 stmia r0!, {r3,r12}
24 bpl mcp16_loop
25
26mcp16_fin:
27 tst r2, #2
28 ldrne r3, [r1], #4
29 strne r3, [r0], #4
30 ands r2, r2, #1
31 bxeq lr
32
33mcp16_cant_align:
34 ldrh r3, [r1], #2
35 subs r2, r2, #1
36 strh r3, [r0], #2
37 bne mcp16_cant_align
38
39 bx lr
40
41
42
43.global memcpy32 @ int *dest, int *src, int count
44
45memcpy32:
46 stmfd sp!, {r4,lr}
47
48 subs r2, r2, #4
49 bmi mcp32_fin
50
51mcp32_loop:
52 ldmia r1!, {r3,r4,r12,lr}
53 subs r2, r2, #4
54 stmia r0!, {r3,r4,r12,lr}
55 bpl mcp32_loop
56
57mcp32_fin:
58 tst r2, #3
59 ldmeqfd sp!, {r4,pc}
60 tst r2, #1
61 ldrne r3, [r1], #4
62 strne r3, [r0], #4
63
64mcp32_no_unal1:
65 tst r2, #2
66 ldmneia r1!, {r3,r12}
67 ldmfd sp!, {r4,lr}
68 stmneia r0!, {r3,r12}
69 bx lr
70
71
72
73.global memset32 @ int *dest, int c, int count
74
75memset32:
76 stmfd sp!, {lr}
77
78 mov r3, r1
79 subs r2, r2, #4
80 bmi mst32_fin
81
82 mov r12,r1
83 mov lr, r1
84
85mst32_loop:
86 subs r2, r2, #4
87 stmia r0!, {r1,r3,r12,lr}
88 bpl mst32_loop
89
90mst32_fin:
91 tst r2, #1
92 strne r1, [r0], #4
93
94 tst r2, #2
95 stmneia r0!, {r1,r3}
96
97 ldmfd sp!, {lr}
98 bx lr
99
100
101