1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef __ASM_ASM_H
18 #define __ASM_ASM_H
19
20 #include <asm/sgidefs.h>
21 #include <asm/asm-eva.h>
22
23
24
25
26 #define LEAF(symbol) \
27 .globl symbol; \
28 .align 2; \
29 .type symbol, @function; \
30 .ent symbol, 0; \
31 symbol: .frame sp, 0, ra; \
32 .cfi_startproc; \
33 .insn
34
35
36
37
38 #define NESTED(symbol, framesize, rpc) \
39 .globl symbol; \
40 .align 2; \
41 .type symbol, @function; \
42 .ent symbol, 0; \
43 symbol: .frame sp, framesize, rpc; \
44 .cfi_startproc; \
45 .insn
46
47
48
49
50 #define END(function) \
51 .cfi_endproc; \
52 .end function; \
53 .size function, .-function
54
55
56
57
58 #define EXPORT(symbol) \
59 .globl symbol; \
60 symbol:
61
62
63
64
65 #define FEXPORT(symbol) \
66 .globl symbol; \
67 .type symbol, @function; \
68 symbol: .insn
69
70
71
72
73 #define ABS(symbol,value) \
74 .globl symbol; \
75 symbol = value
76
77 #define PANIC(msg) \
78 .set push; \
79 .set reorder; \
80 PTR_LA a0, 8f; \
81 jal panic; \
82 9: b 9b; \
83 .set pop; \
84 TEXT(msg)
85
86
87
88
89 #ifdef CONFIG_PRINTK
90 #define PRINT(string) \
91 .set push; \
92 .set reorder; \
93 PTR_LA a0, 8f; \
94 jal printk; \
95 .set pop; \
96 TEXT(string)
97 #else
98 #define PRINT(string)
99 #endif
100
101 #define TEXT(msg) \
102 .pushsection .data; \
103 8: .asciiz msg; \
104 .popsection;
105
106
107
108
109 #if (_MIPS_SIM == _MIPS_SIM_ABI32)
110 #define ALSZ 7
111 #define ALMASK ~7
112 #endif
113 #if (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64)
114 #define ALSZ 15
115 #define ALMASK ~15
116 #endif
117
118
119
120
121
122
123
124
125 #ifdef __mips64
126 #define SZREG 8
127 #else
128 #define SZREG 4
129 #endif
130
131
132
133
134
135 #if (_MIPS_SIM == _MIPS_SIM_ABI32)
136 #define REG_S sw
137 #define REG_L lw
138 #define REG_SUBU subu
139 #define REG_ADDU addu
140 #endif
141 #if (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64)
142 #define REG_S sd
143 #define REG_L ld
144 #define REG_SUBU dsubu
145 #define REG_ADDU daddu
146 #endif
147
148
149
150
151 #if (_MIPS_SZINT == 32)
152 #define INT_ADD add
153 #define INT_ADDU addu
154 #define INT_ADDI addi
155 #define INT_ADDIU addiu
156 #define INT_SUB sub
157 #define INT_SUBU subu
158 #define INT_L lw
159 #define INT_S sw
160 #define INT_SLL sll
161 #define INT_SLLV sllv
162 #define INT_SRL srl
163 #define INT_SRLV srlv
164 #define INT_SRA sra
165 #define INT_SRAV srav
166 #endif
167
168 #if (_MIPS_SZINT == 64)
169 #define INT_ADD dadd
170 #define INT_ADDU daddu
171 #define INT_ADDI daddi
172 #define INT_ADDIU daddiu
173 #define INT_SUB dsub
174 #define INT_SUBU dsubu
175 #define INT_L ld
176 #define INT_S sd
177 #define INT_SLL dsll
178 #define INT_SLLV dsllv
179 #define INT_SRL dsrl
180 #define INT_SRLV dsrlv
181 #define INT_SRA dsra
182 #define INT_SRAV dsrav
183 #endif
184
185
186
187
188 #if (_MIPS_SZLONG == 32)
189 #define LONG_ADD add
190 #define LONG_ADDU addu
191 #define LONG_ADDI addi
192 #define LONG_ADDIU addiu
193 #define LONG_SUB sub
194 #define LONG_SUBU subu
195 #define LONG_L lw
196 #define LONG_S sw
197 #define LONG_SP swp
198 #define LONG_SLL sll
199 #define LONG_SLLV sllv
200 #define LONG_SRL srl
201 #define LONG_SRLV srlv
202 #define LONG_SRA sra
203 #define LONG_SRAV srav
204
205 #define LONG .word
206 #define LONGSIZE 4
207 #define LONGMASK 3
208 #define LONGLOG 2
209 #endif
210
211 #if (_MIPS_SZLONG == 64)
212 #define LONG_ADD dadd
213 #define LONG_ADDU daddu
214 #define LONG_ADDI daddi
215 #define LONG_ADDIU daddiu
216 #define LONG_SUB dsub
217 #define LONG_SUBU dsubu
218 #define LONG_L ld
219 #define LONG_S sd
220 #define LONG_SP sdp
221 #define LONG_SLL dsll
222 #define LONG_SLLV dsllv
223 #define LONG_SRL dsrl
224 #define LONG_SRLV dsrlv
225 #define LONG_SRA dsra
226 #define LONG_SRAV dsrav
227
228 #define LONG .dword
229 #define LONGSIZE 8
230 #define LONGMASK 7
231 #define LONGLOG 3
232 #endif
233
234
235
236
237 #if (_MIPS_SZPTR == 32)
238 #define PTR_ADD add
239 #define PTR_ADDU addu
240 #define PTR_ADDI addi
241 #define PTR_ADDIU addiu
242 #define PTR_SUB sub
243 #define PTR_SUBU subu
244 #define PTR_L lw
245 #define PTR_S sw
246 #define PTR_LA la
247 #define PTR_LI li
248 #define PTR_SLL sll
249 #define PTR_SLLV sllv
250 #define PTR_SRL srl
251 #define PTR_SRLV srlv
252 #define PTR_SRA sra
253 #define PTR_SRAV srav
254
255 #define PTR_SCALESHIFT 2
256
257 #define PTR .word
258 #define PTRSIZE 4
259 #define PTRLOG 2
260 #endif
261
262 #if (_MIPS_SZPTR == 64)
263 #define PTR_ADD dadd
264 #define PTR_ADDU daddu
265 #define PTR_ADDI daddi
266 #define PTR_ADDIU daddiu
267 #define PTR_SUB dsub
268 #define PTR_SUBU dsubu
269 #define PTR_L ld
270 #define PTR_S sd
271 #define PTR_LA dla
272 #define PTR_LI dli
273 #define PTR_SLL dsll
274 #define PTR_SLLV dsllv
275 #define PTR_SRL dsrl
276 #define PTR_SRLV dsrlv
277 #define PTR_SRA dsra
278 #define PTR_SRAV dsrav
279
280 #define PTR_SCALESHIFT 3
281
282 #define PTR .dword
283 #define PTRSIZE 8
284 #define PTRLOG 3
285 #endif
286
287
288
289
290 #if (_MIPS_SIM == _MIPS_SIM_ABI32)
291 #define MFC0 mfc0
292 #define MTC0 mtc0
293 #endif
294 #if (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64)
295 #define MFC0 dmfc0
296 #define MTC0 dmtc0
297 #endif
298
299 #define SSNOP sll zero, zero, 1
300
301 #ifdef CONFIG_SGI_IP28
302
303 #include <asm/cacheops.h>
304 #define R10KCBARRIER(addr) cache Cache_Barrier, addr;
305 #else
306 #define R10KCBARRIER(addr)
307 #endif
308
309 #endif