]> Git Repo - binutils.git/blame_incremental - sim/ppc/inline.h
Automatic date update in version.in
[binutils.git] / sim / ppc / inline.h
... / ...
CommitLineData
1/* This file is part of the program psim.
2
3 Copyright (C) 1994-1995, Andrew Cagney <[email protected]>
4
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.
9
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.
14
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/>.
17
18 */
19
20
21#ifndef _INLINE_H_
22#define _INLINE_H_
23
24#include "ansidecl.h"
25
26#define STATIC(TYPE) static TYPE
27
28
29/* sim_endian is always inlined */
30
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
43
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
49
50
51/* bits is always inlined */
52
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
65
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
71
72
73/* core is inlined with inline.c */
74
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
87
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
93
94
95/* vm is inlined with inline.c */
96
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
109
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
115
116
117/* cpu is always inlined */
118
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
131
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
137
138
139/* model is inlined with inline.c */
140
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
153
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
159
160
161/* events is inlined with inline.c */
162
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
175
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
181
182
183/* mon is inlined with inline.c */
184
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
197
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
203
204
205/* registers is inlined with inline.c */
206
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
219
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
225
226
227/* interrupts is inlined with inline.c */
228
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
241
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
247
248
249/* device is inlined with inline.c */
250
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
263
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
269
270
271/* tree is inlined with inline.c */
272
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
285
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
291
292
293/* spreg is inlined with inline.c */
294
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
307
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
313
314
315/* semantics is inlined with inline.c */
316
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
329
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
337
338
339/* idecode is actually not inlined */
340
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
353
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
361
362
363/* icache is inlined with inline.c */
364
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
377
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
385
386
387/* support is always inlined */
388
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
401
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
409
410
411/* options is inlined with inline.c */
412
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
425
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
431
432
433/* os_emul is inlined with inline.c */
434
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
447
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
453
454
455/* psim is actually not inlined */
456
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
469
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
475
476
477/* cap is inlined with inline.c */
478
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
491
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
497
498#endif
This page took 0.030138 seconds and 4 git commands to generate.