Automatic date update in version.in
[binutils-gdb.git] / sim / ppc / inline.h
blobda0bd5cf7eb76ae1f8b101d1ebda55069c15bc33
1 /* This file is part of the program psim.
3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, see <http://www.gnu.org/licenses/>.
21 #ifndef _INLINE_H_
22 #define _INLINE_H_
24 #include "ansidecl.h"
26 #define STATIC(TYPE) static TYPE
29 /* sim_endian is always inlined */
31 #if !defined(_SIM_ENDIAN_C_) && (SIM_ENDIAN_INLINE & INCLUDE_MODULE)
32 # if (SIM_ENDIAN_INLINE & INLINE_MODULE)
33 # define INLINE_PSIM_ENDIAN(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
34 # define EXTERN_PSIM_ENDIAN(TYPE) ATTRIBUTE_UNUSED static TYPE
35 # else
36 # define INLINE_PSIM_ENDIAN(TYPE) ATTRIBUTE_UNUSED static TYPE
37 # define EXTERN_PSIM_ENDIAN(TYPE) ATTRIBUTE_UNUSED static TYPE
38 # endif
39 #else
40 # define INLINE_PSIM_ENDIAN(TYPE) TYPE
41 # define EXTERN_PSIM_ENDIAN(TYPE) TYPE
42 #endif
44 #if (SIM_ENDIAN_INLINE & INLINE_LOCALS)
45 # define STATIC_INLINE_PSIM_ENDIAN(TYPE) static INLINE TYPE
46 #else
47 # define STATIC_INLINE_PSIM_ENDIAN(TYPE) static TYPE
48 #endif
51 /* bits is always inlined */
53 #if !defined(_BITS_C_) && (BITS_INLINE & INCLUDE_MODULE)
54 # if (BITS_INLINE & INLINE_MODULE)
55 # define INLINE_BITS(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
56 # define EXTERN_BITS(TYPE) ATTRIBUTE_UNUSED static TYPE
57 # else
58 # define INLINE_BITS(TYPE) ATTRIBUTE_UNUSED static TYPE
59 # define EXTERN_BITS(TYPE) ATTRIBUTE_UNUSED static TYPE
60 # endif
61 #else
62 # define INLINE_BITS(TYPE) TYPE
63 # define EXTERN_BITS(TYPE) TYPE
64 #endif
66 #if (BITS_INLINE & INLINE_LOCALS)
67 # define STATIC_INLINE_BITS(TYPE) static INLINE TYPE
68 #else
69 # define STATIC_INLINE_BITS(TYPE) static TYPE
70 #endif
73 /* core is inlined with inline.c */
75 #if defined(_INLINE_C_) && !defined(_CORE_C_) && (CORE_INLINE & INCLUDE_MODULE)
76 # if (CORE_INLINE & INLINE_MODULE)
77 # define INLINE_CORE(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
78 # define EXTERN_CORE(TYPE) ATTRIBUTE_UNUSED static TYPE
79 #else
80 # define INLINE_CORE(TYPE) ATTRIBUTE_UNUSED static TYPE
81 # define EXTERN_CORE(TYPE) ATTRIBUTE_UNUSED static TYPE
82 #endif
83 #else
84 # define INLINE_CORE(TYPE) TYPE
85 # define EXTERN_CORE(TYPE) TYPE
86 #endif
88 #if (CORE_INLINE & INLINE_LOCALS)
89 # define STATIC_INLINE_CORE(TYPE) static INLINE TYPE
90 #else
91 # define STATIC_INLINE_CORE(TYPE) static TYPE
92 #endif
95 /* vm is inlined with inline.c */
97 #if defined(_INLINE_C_) && !defined(_VM_C_) && (VM_INLINE & INCLUDE_MODULE)
98 # if (VM_INLINE & INLINE_MODULE)
99 # define INLINE_VM(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
100 # define EXTERN_VM(TYPE) ATTRIBUTE_UNUSED static TYPE
101 #else
102 # define INLINE_VM(TYPE) ATTRIBUTE_UNUSED static TYPE
103 # define EXTERN_VM(TYPE) ATTRIBUTE_UNUSED static TYPE
104 #endif
105 #else
106 # define INLINE_VM(TYPE) TYPE
107 # define EXTERN_VM(TYPE) TYPE
108 #endif
110 #if (VM_INLINE & INLINE_LOCALS)
111 # define STATIC_INLINE_VM(TYPE) static INLINE TYPE
112 #else
113 # define STATIC_INLINE_VM(TYPE) static TYPE
114 #endif
117 /* cpu is always inlined */
119 #if !defined(_CPU_C_) && (CPU_INLINE & INCLUDE_MODULE)
120 # if (CPU_INLINE & INLINE_MODULE)
121 # define INLINE_CPU(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
122 # define EXTERN_CPU(TYPE) ATTRIBUTE_UNUSED static TYPE
123 #else
124 # define INLINE_CPU(TYPE) ATTRIBUTE_UNUSED static TYPE
125 # define EXTERN_CPU(TYPE) ATTRIBUTE_UNUSED static TYPE
126 #endif
127 #else
128 # define INLINE_CPU(TYPE) TYPE
129 # define EXTERN_CPU(TYPE) TYPE
130 #endif
132 #if (CPU_INLINE & INLINE_LOCALS)
133 # define STATIC_INLINE_CPU(TYPE) static INLINE TYPE
134 #else
135 # define STATIC_INLINE_CPU(TYPE) static TYPE
136 #endif
139 /* model is inlined with inline.c */
141 #if defined(_INLINE_C_) && !defined(_MODEL_C_) && (MODEL_INLINE & INCLUDE_MODULE)
142 # if (MODEL_INLINE & INLINE_MODULE)
143 # define INLINE_MODEL(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
144 # define EXTERN_MODEL(TYPE) ATTRIBUTE_UNUSED static TYPE
145 #else
146 # define INLINE_MODEL(TYPE) ATTRIBUTE_UNUSED static TYPE
147 # define EXTERN_MODEL(TYPE) ATTRIBUTE_UNUSED static TYPE
148 #endif
149 #else
150 # define INLINE_MODEL(TYPE) TYPE
151 # define EXTERN_MODEL(TYPE) TYPE
152 #endif
154 #if (MODEL_INLINE & INLINE_LOCALS)
155 # define STATIC_INLINE_MODEL(TYPE) static INLINE TYPE
156 #else
157 # define STATIC_INLINE_MODEL(TYPE) static TYPE
158 #endif
161 /* events is inlined with inline.c */
163 #if defined(_INLINE_C_) && !defined(_EVENTS_C_) && (EVENTS_INLINE & INCLUDE_MODULE)
164 # if (EVENTS_INLINE & INLINE_MODULE)
165 # define INLINE_EVENTS(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
166 # define EXTERN_EVENTS(TYPE) ATTRIBUTE_UNUSED static TYPE
167 #else
168 # define INLINE_EVENTS(TYPE) ATTRIBUTE_UNUSED static TYPE
169 # define EXTERN_EVENTS(TYPE) ATTRIBUTE_UNUSED static TYPE
170 #endif
171 #else
172 # define INLINE_EVENTS(TYPE) TYPE
173 # define EXTERN_EVENTS(TYPE) TYPE
174 #endif
176 #if (EVENTS_INLINE & INLINE_LOCALS)
177 # define STATIC_INLINE_EVENTS(TYPE) static INLINE TYPE
178 #else
179 # define STATIC_INLINE_EVENTS(TYPE) static TYPE
180 #endif
183 /* mon is inlined with inline.c */
185 #if defined(_INLINE_C_) && !defined(_MON_C_) && (MON_INLINE & INCLUDE_MODULE)
186 # if (MON_INLINE & INLINE_MODULE)
187 # define INLINE_MON(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
188 # define EXTERN_MON(TYPE) ATTRIBUTE_UNUSED static TYPE
189 #else
190 # define INLINE_MON(TYPE) ATTRIBUTE_UNUSED static TYPE
191 # define EXTERN_MON(TYPE) ATTRIBUTE_UNUSED static TYPE
192 #endif
193 #else
194 # define INLINE_MON(TYPE) TYPE
195 # define EXTERN_MON(TYPE) TYPE
196 #endif
198 #if (MON_INLINE & INLINE_LOCALS)
199 # define STATIC_INLINE_MON(TYPE) static INLINE TYPE
200 #else
201 # define STATIC_INLINE_MON(TYPE) static TYPE
202 #endif
205 /* registers is inlined with inline.c */
207 #if defined(_INLINE_C_) && !defined(_REGISTERS_C_) && (REGISTERS_INLINE & INCLUDE_MODULE)
208 # if (REGISTERS_INLINE & INLINE_MODULE)
209 # define INLINE_REGISTERS(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
210 # define EXTERN_REGISTERS(TYPE) ATTRIBUTE_UNUSED static TYPE
211 #else
212 # define INLINE_REGISTERS(TYPE) ATTRIBUTE_UNUSED static TYPE
213 # define EXTERN_REGISTERS(TYPE) ATTRIBUTE_UNUSED static TYPE
214 #endif
215 #else
216 # define INLINE_REGISTERS(TYPE) TYPE
217 # define EXTERN_REGISTERS(TYPE) TYPE
218 #endif
220 #if (REGISTERS_INLINE & INLINE_LOCALS)
221 # define STATIC_INLINE_REGISTERS(TYPE) static INLINE TYPE
222 #else
223 # define STATIC_INLINE_REGISTERS(TYPE) static TYPE
224 #endif
227 /* interrupts is inlined with inline.c */
229 #if defined(_INLINE_C_) && !defined(_INTERRUPTS_C_) && (INTERRUPTS_INLINE & INCLUDE_MODULE)
230 # if (INTERRUPTS_INLINE & INLINE_MODULE)
231 # define INLINE_INTERRUPTS(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
232 # define EXTERN_INTERRUPTS(TYPE) ATTRIBUTE_UNUSED static TYPE
233 #else
234 # define INLINE_INTERRUPTS(TYPE) ATTRIBUTE_UNUSED static TYPE
235 # define EXTERN_INTERRUPTS(TYPE) ATTRIBUTE_UNUSED static TYPE
236 #endif
237 #else
238 # define INLINE_INTERRUPTS(TYPE) TYPE
239 # define EXTERN_INTERRUPTS(TYPE) TYPE
240 #endif
242 #if (INTERRUPTS_INLINE & INLINE_LOCALS)
243 # define STATIC_INLINE_INTERRUPTS(TYPE) static INLINE TYPE
244 #else
245 # define STATIC_INLINE_INTERRUPTS(TYPE) static TYPE
246 #endif
249 /* device is inlined with inline.c */
251 #if defined(_INLINE_C_) && !defined(_DEVICE_C_) && (DEVICE_INLINE & INCLUDE_MODULE)
252 # if (DEVICE_INLINE & INLINE_MODULE)
253 # define INLINE_DEVICE(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
254 # define EXTERN_DEVICE(TYPE) ATTRIBUTE_UNUSED static TYPE
255 #else
256 # define INLINE_DEVICE(TYPE) ATTRIBUTE_UNUSED static TYPE
257 # define EXTERN_DEVICE(TYPE) ATTRIBUTE_UNUSED static TYPE
258 #endif
259 #else
260 # define INLINE_DEVICE(TYPE) TYPE
261 # define EXTERN_DEVICE(TYPE) TYPE
262 #endif
264 #if (DEVICE_INLINE & INLINE_LOCALS)
265 # define STATIC_INLINE_DEVICE(TYPE) static INLINE TYPE
266 #else
267 # define STATIC_INLINE_DEVICE(TYPE) static TYPE
268 #endif
271 /* tree is inlined with inline.c */
273 #if defined(_INLINE_C_) && !defined(_TREE_C_) && (TREE_INLINE & INCLUDE_MODULE)
274 # if (TREE_INLINE & INLINE_MODULE)
275 # define INLINE_TREE(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
276 # define EXTERN_TREE(TYPE) ATTRIBUTE_UNUSED static TYPE
277 #else
278 # define INLINE_TREE(TYPE) ATTRIBUTE_UNUSED static TYPE
279 # define EXTERN_TREE(TYPE) ATTRIBUTE_UNUSED static TYPE
280 #endif
281 #else
282 # define INLINE_TREE(TYPE) TYPE
283 # define EXTERN_TREE(TYPE) TYPE
284 #endif
286 #if (TREE_INLINE & INLINE_LOCALS)
287 # define STATIC_INLINE_TREE(TYPE) static INLINE TYPE
288 #else
289 # define STATIC_INLINE_TREE(TYPE) static TYPE
290 #endif
293 /* spreg is inlined with inline.c */
295 #if defined(_INLINE_C_) && !defined(_SPREG_C_) && (SPREG_INLINE & INCLUDE_MODULE)
296 # if (SPREG_INLINE & INLINE_MODULE)
297 # define INLINE_SPREG(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
298 # define EXTERN_SPREG(TYPE) ATTRIBUTE_UNUSED static TYPE
299 #else
300 # define INLINE_SPREG(TYPE) ATTRIBUTE_UNUSED static TYPE
301 # define EXTERN_SPREG(TYPE) ATTRIBUTE_UNUSED static TYPE
302 #endif
303 #else
304 # define INLINE_SPREG(TYPE) TYPE
305 # define EXTERN_SPREG(TYPE) TYPE
306 #endif
308 #if (SPREG_INLINE & INLINE_LOCALS)
309 # define STATIC_INLINE_SPREG(TYPE) static INLINE TYPE
310 #else
311 # define STATIC_INLINE_SPREG(TYPE) static TYPE
312 #endif
315 /* semantics is inlined with inline.c */
317 #if defined(_INLINE_C_) && !defined(_SEMANTICS_C_) && (SEMANTICS_INLINE & INCLUDE_MODULE)
318 # if (SEMANTICS_INLINE & INLINE_MODULE)
319 # define PSIM_INLINE_SEMANTICS(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
320 # define PSIM_EXTERN_SEMANTICS(TYPE) ATTRIBUTE_UNUSED static TYPE
321 #else
322 # define PSIM_INLINE_SEMANTICS(TYPE) ATTRIBUTE_UNUSED static TYPE
323 # define PSIM_EXTERN_SEMANTICS(TYPE) ATTRIBUTE_UNUSED static TYPE
324 #endif
325 #else
326 # define PSIM_INLINE_SEMANTICS(TYPE) TYPE
327 # define PSIM_EXTERN_SEMANTICS(TYPE) TYPE
328 #endif
330 #if 0 /* this isn't used */
331 #if (SEMANTICS_INLINE & INLINE_LOCALS)
332 # define STATIC_INLINE_SEMANTICS(TYPE) static INLINE TYPE
333 #else
334 # define STATIC_INLINE_SEMANTICS(TYPE) static TYPE
335 #endif
336 #endif
339 /* idecode is actually not inlined */
341 #if defined(_INLINE_C_) && !defined(_IDECODE_C_) && (IDECODE_INLINE & INCLUDE_MODULE)
342 # if (IDECODE_INLINE & INLINE_MODULE)
343 # define PSIM_INLINE_IDECODE(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
344 # define EXTERN_IDECODE(TYPE) ATTRIBUTE_UNUSED static TYPE
345 #else
346 # define PSIM_INLINE_IDECODE(TYPE) ATTRIBUTE_UNUSED static TYPE
347 # define EXTERN_IDECODE(TYPE) ATTRIBUTE_UNUSED static TYPE
348 #endif
349 #else
350 # define PSIM_INLINE_IDECODE(TYPE) TYPE
351 # define EXTERN_IDECODE(TYPE) TYPE
352 #endif
354 #if 0 /* this isn't used */
355 #if (IDECODE_INLINE & INLINE_LOCALS)
356 # define STATIC_INLINE_IDECODE(TYPE) static INLINE TYPE
357 #else
358 # define STATIC_INLINE_IDECODE(TYPE) static TYPE
359 #endif
360 #endif
363 /* icache is inlined with inline.c */
365 #if defined(_INLINE_C_) && !defined(_ICACHE_C_) && (ICACHE_INLINE & INCLUDE_MODULE)
366 # if (ICACHE_INLINE & INLINE_MODULE)
367 # define PSIM_INLINE_ICACHE(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
368 # define EXTERN_ICACHE(TYPE) ATTRIBUTE_UNUSED static TYPE
369 #else
370 # define PSIM_INLINE_ICACHE(TYPE) ATTRIBUTE_UNUSED static TYPE
371 # define EXTERN_ICACHE(TYPE) ATTRIBUTE_UNUSED static TYPE
372 #endif
373 #else
374 # define PSIM_INLINE_ICACHE(TYPE) TYPE
375 # define EXTERN_ICACHE(TYPE) TYPE
376 #endif
378 #if 0 /* this isn't used */
379 #if (ICACHE_INLINE & INLINE_LOCALS)
380 # define STATIC_INLINE_ICACHE(TYPE) static INLINE TYPE
381 #else
382 # define STATIC_INLINE_ICACHE(TYPE) static TYPE
383 #endif
384 #endif
387 /* support is always inlined */
389 #if !defined(_SUPPORT_C_) && (SUPPORT_INLINE & INCLUDE_MODULE)
390 # if (SUPPORT_INLINE & INLINE_MODULE)
391 # define PSIM_INLINE_SUPPORT(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
392 # define EXTERN_SUPPORT(TYPE) ATTRIBUTE_UNUSED static TYPE
393 #else
394 # define PSIM_INLINE_SUPPORT(TYPE) ATTRIBUTE_UNUSED static TYPE
395 # define EXTERN_SUPPORT(TYPE) ATTRIBUTE_UNUSED static TYPE
396 #endif
397 #else
398 # define PSIM_INLINE_SUPPORT(TYPE) TYPE
399 # define EXTERN_SUPPORT(TYPE) TYPE
400 #endif
402 #if 0 /* this isn't used */
403 #if (SUPPORT_INLINE & INLINE_LOCALS)
404 # define STATIC_INLINE_SUPPORT(TYPE) static INLINE TYPE
405 #else
406 # define STATIC_INLINE_SUPPORT(TYPE) static TYPE
407 #endif
408 #endif
411 /* options is inlined with inline.c */
413 #if defined(_INLINE_C_) && !defined(_OPTIONS_C_) && (OPTIONS_INLINE & INCLUDE_MODULE)
414 # if (OPTIONS_INLINE & INLINE_MODULE)
415 # define INLINE_OPTIONS(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
416 # define EXTERN_OPTIONS(TYPE) ATTRIBUTE_UNUSED static TYPE
417 #else
418 # define INLINE_OPTIONS(TYPE) ATTRIBUTE_UNUSED static TYPE
419 # define EXTERN_OPTIONS(TYPE) ATTRIBUTE_UNUSED static TYPE
420 #endif
421 #else
422 # define INLINE_OPTIONS(TYPE) TYPE
423 # define EXTERN_OPTIONS(TYPE) TYPE
424 #endif
426 #if (OPTIONS_INLINE & INLINE_LOCALS)
427 # define STATIC_INLINE_OPTIONS(TYPE) static INLINE TYPE
428 #else
429 # define STATIC_INLINE_OPTIONS(TYPE) static TYPE
430 #endif
433 /* os_emul is inlined with inline.c */
435 #if defined(_INLINE_C_) && !defined(_OS_EMUL_C_) && (OS_EMUL_INLINE & INCLUDE_MODULE)
436 # if (OS_EMUL_INLINE & INLINE_MODULE)
437 # define INLINE_OS_EMUL(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
438 # define EXTERN_OS_EMUL(TYPE) ATTRIBUTE_UNUSED static TYPE
439 #else
440 # define INLINE_OS_EMUL(TYPE) ATTRIBUTE_UNUSED static TYPE
441 # define EXTERN_OS_EMUL(TYPE) ATTRIBUTE_UNUSED static TYPE
442 #endif
443 #else
444 # define INLINE_OS_EMUL(TYPE) TYPE
445 # define EXTERN_OS_EMUL(TYPE) TYPE
446 #endif
448 #if (OS_EMUL_INLINE & INLINE_LOCALS)
449 # define STATIC_INLINE_OS_EMUL(TYPE) static INLINE TYPE
450 #else
451 # define STATIC_INLINE_OS_EMUL(TYPE) static TYPE
452 #endif
455 /* psim is actually not inlined */
457 #if defined(_INLINE_C_) && !defined(_PSIM_C_) && (PSIM_INLINE & INCLUDE_MODULE)
458 # if (PSIM_INLINE & INLINE_MODULE)
459 # define INLINE_PSIM(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
460 # define EXTERN_PSIM(TYPE) ATTRIBUTE_UNUSED static TYPE
461 #else
462 # define INLINE_PSIM(TYPE) ATTRIBUTE_UNUSED static TYPE
463 # define EXTERN_PSIM(TYPE) ATTRIBUTE_UNUSED static TYPE
464 #endif
465 #else
466 # define INLINE_PSIM(TYPE) TYPE
467 # define EXTERN_PSIM(TYPE) TYPE
468 #endif
470 #if (PSIM_INLINE & INLINE_LOCALS)
471 # define STATIC_INLINE_PSIM(TYPE) static INLINE TYPE
472 #else
473 # define STATIC_INLINE_PSIM(TYPE) static TYPE
474 #endif
477 /* cap is inlined with inline.c */
479 #if defined(_INLINE_C_) && !defined(_CAP_C_) && (CAP_INLINE & INCLUDE_MODULE)
480 # if (CAP_INLINE & INLINE_MODULE)
481 # define INLINE_CAP(TYPE) ATTRIBUTE_UNUSED static INLINE TYPE
482 # define EXTERN_CAP(TYPE) ATTRIBUTE_UNUSED static TYPE
483 #else
484 # define INLINE_CAP(TYPE) ATTRIBUTE_UNUSED static TYPE
485 # define EXTERN_CAP(TYPE) ATTRIBUTE_UNUSED static TYPE
486 #endif
487 #else
488 # define INLINE_CAP(TYPE) TYPE
489 # define EXTERN_CAP(TYPE) TYPE
490 #endif
492 #if (CAP_INLINE & INLINE_LOCALS)
493 # define STATIC_INLINE_CAP(TYPE) static INLINE TYPE
494 #else
495 # define STATIC_INLINE_CAP(TYPE) static TYPE
496 #endif
498 #endif