Merge branch 'async-scsi-resume' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / arch / arm / mach-shmobile / include / mach / zboot_macros.h
1 #ifndef __ZBOOT_MACRO_H
2 #define __ZBOOT_MACRO_H
3
4 /* The LIST command is used to include comments in the script */
5 .macro  LIST comment
6 .endm
7
8 /* The ED command is used to write a 32-bit word */
9 .macro ED, addr, data
10         LDR     r0, 1f
11         LDR     r1, 2f
12         STR     r1, [r0]
13         B       3f
14 1 :     .long   \addr
15 2 :     .long   \data
16 3 :
17 .endm
18
19 /* The EW command is used to write a 16-bit word */
20 .macro EW, addr, data
21         LDR     r0, 1f
22         LDR     r1, 2f
23         STRH    r1, [r0]
24         B       3f
25 1 :     .long   \addr
26 2 :     .long   \data
27 3 :
28 .endm
29
30 /* The EB command is used to write an 8-bit word */
31 .macro EB, addr, data
32         LDR     r0, 1f
33         LDR     r1, 2f
34         STRB    r1, [r0]
35         B       3f
36 1 :     .long   \addr
37 2 :     .long   \data
38 3 :
39 .endm
40
41 /* The WAIT command is used to delay the execution */
42 .macro  WAIT, time, reg
43         LDR     r1, 1f
44         LDR     r0, 2f
45         STR     r0, [r1]
46 10 :
47         LDR     r0, [r1]
48         CMP     r0, #0x00000000
49         BNE     10b
50         NOP
51         B       3f
52 1 :     .long   \reg
53 2 :     .long   \time * 100
54 3 :
55 .endm
56
57 /* The DD command is used to read a 32-bit word */
58 .macro  DD, start, end
59         LDR     r1, 1f
60         B       2f
61 1 :     .long   \start
62 2 :
63 .endm
64
65 /* loop until a given value has been read (with mask) */
66 .macro WAIT_MASK, addr, data, cmp
67         LDR     r0, 2f
68         LDR     r1, 3f
69         LDR     r2, 4f
70 1:
71         LDR     r3, [r0, #0]
72         AND     r3, r1, r3
73         CMP     r2, r3
74         BNE     1b
75         B       5f
76 2:      .long   \addr
77 3:      .long   \data
78 4:      .long   \cmp
79 5:
80 .endm
81
82 /* read 32-bit value from addr, "or" an immediate and write back */
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
90 1:      .long   \addr
91 2:      .long   \data
92 3:
93 .endm
94
95 /* read 32-bit value from addr, "and" an immediate and write back */
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
103 1:      .long \addr
104 2:      .long \data
105 3:
106 .endm
107
108 #endif /* __ZBOOT_MACRO_H */