1#ifndef __ZBOOT_MACRO_H
2#define __ZBOOT_MACRO_H
3
4
5.macro LIST comment
6.endm
7
8
9.macro ED, addr, data
10 LDR r0, 1f
11 LDR r1, 2f
12 STR r1, [r0]
13 B 3f
141 : .long \addr
152 : .long \data
163 :
17.endm
18
19
20.macro EW, addr, data
21 LDR r0, 1f
22 LDR r1, 2f
23 STRH r1, [r0]
24 B 3f
251 : .long \addr
262 : .long \data
273 :
28.endm
29
30
31.macro EB, addr, data
32 LDR r0, 1f
33 LDR r1, 2f
34 STRB r1, [r0]
35 B 3f
361 : .long \addr
372 : .long \data
383 :
39.endm
40
41
42.macro WAIT, time, reg
43 LDR r1, 1f
44 LDR r0, 2f
45 STR r0, [r1]
4610 :
47 LDR r0, [r1]
48 CMP r0, #0x00000000
49 BNE 10b
50 NOP
51 B 3f
521 : .long \reg
532 : .long \time * 100
543 :
55.endm
56
57
58.macro DD, start, end
59 LDR r1, 1f
60 B 2f
611 : .long \start
622 :
63.endm
64
65
66.macro WAIT_MASK, addr, data, cmp
67 LDR r0, 2f
68 LDR r1, 3f
69 LDR r2, 4f
701:
71 LDR r3, [r0, #0]
72 AND r3, r1, r3
73 CMP r2, r3
74 BNE 1b
75 B 5f
762: .long \addr
773: .long \data
784: .long \cmp
795:
80.endm
81
82
83.macro ED_OR, addr, data
84 LDR r4, 1f
85 LDR r5, 2f
86 LDR r6, [r4]
87 ORR r5, r6, r5
88 STR r5, [r4]
89 B 3f
901: .long \addr
912: .long \data
923:
93.endm
94
95
96.macro ED_AND, addr, data
97 LDR r4, 1f
98 LDR r5, 2f
99 LDR r6, [r4]
100 AND r5, r6, r5
101 STR r5, [r4]
102 B 3f
1031: .long \addr
1042: .long \data
1053:
106.endm
107
108#endif
109