]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/ppc/inline.h
* config/sh/tm-sh.h (BELIEVE_PCC_PROMOTION): Define, so that
[thirdparty/binutils-gdb.git] / sim / ppc / inline.h
CommitLineData
73c4941b
MM
1/* This file is part of the program psim.
2
3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
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 2 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, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 */
20
21
22#ifndef _INLINE_H_
23#define _INLINE_H_
24
30c87b55
MM
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_SIM_ENDIAN(TYPE) static INLINE TYPE UNUSED
34# define EXTERN_SIM_ENDIAN(TYPE) static TYPE UNUSED
35# else
36# define INLINE_SIM_ENDIAN(TYPE) static TYPE UNUSED
37# define EXTERN_SIM_ENDIAN(TYPE) static TYPE UNUSED
38# endif
73c4941b 39#else
30c87b55
MM
40# define INLINE_SIM_ENDIAN(TYPE) TYPE
41# define EXTERN_SIM_ENDIAN(TYPE) TYPE
73c4941b 42#endif
30c87b55
MM
43
44#if (SIM_ENDIAN_INLINE & INLINE_LOCALS)
45# define STATIC_INLINE_SIM_ENDIAN(TYPE) static INLINE TYPE
46#else
47# define STATIC_INLINE_SIM_ENDIAN(TYPE) static TYPE
73c4941b
MM
48#endif
49
30c87b55
MM
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) static INLINE TYPE UNUSED
56# define EXTERN_BITS(TYPE) static TYPE UNUSED
57# else
58# define INLINE_BITS(TYPE) static TYPE UNUSED
59# define EXTERN_BITS(TYPE) static TYPE UNUSED
60# endif
73c4941b 61#else
30c87b55
MM
62# define INLINE_BITS(TYPE) TYPE
63# define EXTERN_BITS(TYPE) TYPE
73c4941b 64#endif
30c87b55
MM
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
73c4941b
MM
70#endif
71
30c87b55
MM
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) static INLINE TYPE UNUSED
78# define EXTERN_CORE(TYPE) static TYPE UNUSED
73c4941b 79#else
30c87b55
MM
80# define INLINE_CORE(TYPE) static TYPE UNUSED
81# define EXTERN_CORE(TYPE) static TYPE UNUSED
73c4941b 82#endif
30c87b55
MM
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
73c4941b
MM
92#endif
93
30c87b55
MM
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) static INLINE TYPE UNUSED
100# define EXTERN_VM(TYPE) static TYPE UNUSED
101#else
102# define INLINE_VM(TYPE) static TYPE UNUSED
103# define EXTERN_VM(TYPE) static TYPE UNUSED
104#endif
73c4941b 105#else
30c87b55
MM
106# define INLINE_VM(TYPE) TYPE
107# define EXTERN_VM(TYPE) TYPE
73c4941b 108#endif
30c87b55
MM
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
73c4941b
MM
114#endif
115
30c87b55
MM
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) static INLINE TYPE UNUSED
122# define EXTERN_CPU(TYPE) static TYPE UNUSED
73c4941b 123#else
30c87b55
MM
124# define INLINE_CPU(TYPE) static TYPE UNUSED
125# define EXTERN_CPU(TYPE) static TYPE UNUSED
73c4941b 126#endif
30c87b55
MM
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
73c4941b
MM
136#endif
137
30c87b55
MM
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) static INLINE TYPE UNUSED
144# define EXTERN_MODEL(TYPE) static TYPE UNUSED
a3114052 145#else
30c87b55
MM
146# define INLINE_MODEL(TYPE) static TYPE UNUSED
147# define EXTERN_MODEL(TYPE) static TYPE UNUSED
a3114052 148#endif
30c87b55
MM
149#else
150# define INLINE_MODEL(TYPE) TYPE
151# define EXTERN_MODEL(TYPE) TYPE
a3114052
MM
152#endif
153
30c87b55
MM
154#if (MODEL_INLINE & INLINE_LOCALS)
155# define STATIC_INLINE_MODEL(TYPE) static INLINE TYPE
73c4941b 156#else
30c87b55 157# define STATIC_INLINE_MODEL(TYPE) static TYPE
73c4941b 158#endif
30c87b55
MM
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) static INLINE TYPE UNUSED
166# define EXTERN_EVENTS(TYPE) static TYPE UNUSED
167#else
168# define INLINE_EVENTS(TYPE) static TYPE UNUSED
169# define EXTERN_EVENTS(TYPE) static TYPE UNUSED
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
73c4941b
MM
180#endif
181
30c87b55
MM
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) static INLINE TYPE UNUSED
188# define EXTERN_MON(TYPE) static TYPE UNUSED
73c4941b 189#else
30c87b55
MM
190# define INLINE_MON(TYPE) static TYPE UNUSED
191# define EXTERN_MON(TYPE) static TYPE UNUSED
73c4941b 192#endif
30c87b55
MM
193#else
194# define INLINE_MON(TYPE) TYPE
195# define EXTERN_MON(TYPE) TYPE
73c4941b
MM
196#endif
197
30c87b55
MM
198#if (MON_INLINE & INLINE_LOCALS)
199# define STATIC_INLINE_MON(TYPE) static INLINE TYPE
73c4941b 200#else
30c87b55 201# define STATIC_INLINE_MON(TYPE) static TYPE
73c4941b 202#endif
30c87b55
MM
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) static INLINE TYPE UNUSED
210# define EXTERN_REGISTERS(TYPE) static TYPE UNUSED
211#else
212# define INLINE_REGISTERS(TYPE) static TYPE UNUSED
213# define EXTERN_REGISTERS(TYPE) static TYPE UNUSED
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
73c4941b
MM
224#endif
225
30c87b55
MM
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) static INLINE TYPE UNUSED
232# define EXTERN_INTERRUPTS(TYPE) static TYPE UNUSED
73c4941b 233#else
30c87b55
MM
234# define INLINE_INTERRUPTS(TYPE) static TYPE UNUSED
235# define EXTERN_INTERRUPTS(TYPE) static TYPE UNUSED
73c4941b 236#endif
30c87b55
MM
237#else
238# define INLINE_INTERRUPTS(TYPE) TYPE
239# define EXTERN_INTERRUPTS(TYPE) TYPE
73c4941b
MM
240#endif
241
30c87b55
MM
242#if (INTERRUPTS_INLINE & INLINE_LOCALS)
243# define STATIC_INLINE_INTERRUPTS(TYPE) static INLINE TYPE
73c4941b 244#else
30c87b55 245# define STATIC_INLINE_INTERRUPTS(TYPE) static TYPE
73c4941b 246#endif
30c87b55
MM
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) static INLINE TYPE UNUSED
254# define EXTERN_DEVICE(TYPE) static TYPE UNUSED
255#else
256# define INLINE_DEVICE(TYPE) static TYPE UNUSED
257# define EXTERN_DEVICE(TYPE) static TYPE UNUSED
258#endif
259#else
260# define INLINE_DEVICE(TYPE) TYPE
261# define EXTERN_DEVICE(TYPE) TYPE
73c4941b
MM
262#endif
263
30c87b55
MM
264#if (DEVICE_INLINE & INLINE_LOCALS)
265# define STATIC_INLINE_DEVICE(TYPE) static INLINE TYPE
73c4941b 266#else
30c87b55 267# define STATIC_INLINE_DEVICE(TYPE) static TYPE
73c4941b 268#endif
30c87b55
MM
269
270
271/* spreg is inlined with inline.c */
272
273#if defined(_INLINE_C_) && !defined(_SPREG_C_) && (SPREG_INLINE & INCLUDE_MODULE)
274# if (SPREG_INLINE & INLINE_MODULE)
275# define INLINE_SPREG(TYPE) static INLINE TYPE UNUSED
276# define EXTERN_SPREG(TYPE) static TYPE UNUSED
277#else
278# define INLINE_SPREG(TYPE) static TYPE UNUSED
279# define EXTERN_SPREG(TYPE) static TYPE UNUSED
280#endif
281#else
282# define INLINE_SPREG(TYPE) TYPE
283# define EXTERN_SPREG(TYPE) TYPE
284#endif
285
286#if (SPREG_INLINE & INLINE_LOCALS)
287# define STATIC_INLINE_SPREG(TYPE) static INLINE TYPE
288#else
289# define STATIC_INLINE_SPREG(TYPE) static TYPE
290#endif
291
292
293/* semantics is inlined with inline.c */
294
295#if defined(_INLINE_C_) && !defined(_SEMANTICS_C_) && (SEMANTICS_INLINE & INCLUDE_MODULE)
296# if (SEMANTICS_INLINE & INLINE_MODULE)
297# define INLINE_SEMANTICS(TYPE) static INLINE TYPE UNUSED
298# define EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
299#else
300# define INLINE_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
301# define EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
302#endif
303#else
304# define INLINE_SEMANTICS(TYPE) TYPE REGPARM
305# define EXTERN_SEMANTICS(TYPE) TYPE REGPARM
73c4941b
MM
306#endif
307
30c87b55
MM
308#if (SEMANTICS_INLINE & INLINE_LOCALS)
309# define STATIC_INLINE_SEMANTICS(TYPE) static INLINE TYPE
310#else
311# define STATIC_INLINE_SEMANTICS(TYPE) static TYPE REGPARM
312#endif
313
314
315/* idecode is actually not inlined */
316
317#if defined(_INLINE_C_) && !defined(_IDECODE_C_) && (IDECODE_INLINE & INCLUDE_MODULE)
318# if (IDECODE_INLINE & INLINE_MODULE)
319# define INLINE_IDECODE(TYPE) static INLINE TYPE UNUSED
320# define EXTERN_IDECODE(TYPE) static TYPE UNUSED REGPARM
321#else
322# define INLINE_IDECODE(TYPE) static TYPE UNUSED REGPARM
323# define EXTERN_IDECODE(TYPE) static TYPE UNUSED REGPARM
324#endif
325#else
326# define INLINE_IDECODE(TYPE) TYPE REGPARM
327# define EXTERN_IDECODE(TYPE) TYPE REGPARM
328#endif
329
330#if (IDECODE_INLINE & INLINE_LOCALS)
331# define STATIC_INLINE_IDECODE(TYPE) static INLINE TYPE
332#else
333# define STATIC_INLINE_IDECODE(TYPE) static TYPE REGPARM
334#endif
335
336
337/* icache is inlined with inline.c */
338
339#if defined(_INLINE_C_) && !defined(_ICACHE_C_) && (ICACHE_INLINE & INCLUDE_MODULE)
340# if (ICACHE_INLINE & INLINE_MODULE)
341# define INLINE_ICACHE(TYPE) static INLINE TYPE UNUSED
342# define EXTERN_ICACHE(TYPE) static TYPE UNUSED REGPARM
343#else
344# define INLINE_ICACHE(TYPE) static TYPE UNUSED REGPARM
345# define EXTERN_ICACHE(TYPE) static TYPE UNUSED REGPARM
346#endif
73c4941b 347#else
30c87b55
MM
348# define INLINE_ICACHE(TYPE) TYPE REGPARM
349# define EXTERN_ICACHE(TYPE) TYPE REGPARM
73c4941b 350#endif
30c87b55
MM
351
352#if (ICACHE_INLINE & INLINE_LOCALS)
353# define STATIC_INLINE_ICACHE(TYPE) static INLINE TYPE
354#else
355# define STATIC_INLINE_ICACHE(TYPE) static TYPE REGPARM
73c4941b
MM
356#endif
357
30c87b55
MM
358
359/* support is inlined with inline.c */
360
361#if defined(_INLINE_C_) && !defined(_SUPPORT_C_) && (SUPPORT_INLINE & INCLUDE_MODULE)
362# if (SUPPORT_INLINE & INLINE_MODULE)
363# define INLINE_SUPPORT(TYPE) static INLINE TYPE UNUSED
364# define EXTERN_SUPPORT(TYPE) static TYPE UNUSED REGPARM
73c4941b 365#else
30c87b55
MM
366# define INLINE_SUPPORT(TYPE) static TYPE UNUSED REGPARM
367# define EXTERN_SUPPORT(TYPE) static TYPE UNUSED REGPARM
73c4941b 368#endif
30c87b55
MM
369#else
370# define INLINE_SUPPORT(TYPE) TYPE REGPARM
371# define EXTERN_SUPPORT(TYPE) TYPE REGPARM
372#endif
373
374#if (SUPPORT_INLINE & INLINE_LOCALS)
375# define STATIC_INLINE_SUPPORT(TYPE) static INLINE TYPE
376#else
377# define STATIC_INLINE_SUPPORT(TYPE) static TYPE REGPARM
73c4941b
MM
378#endif
379
30c87b55
MM
380
381/* options is inlined with inline.c */
382
383#if defined(_INLINE_C_) && !defined(_OPTIONS_C_) && (OPTIONS_INLINE & INCLUDE_MODULE)
384# if (OPTIONS_INLINE & INLINE_MODULE)
385# define INLINE_OPTIONS(TYPE) static INLINE TYPE UNUSED
386# define EXTERN_OPTIONS(TYPE) static TYPE UNUSED
73c4941b 387#else
30c87b55
MM
388# define INLINE_OPTIONS(TYPE) static TYPE UNUSED
389# define EXTERN_OPTIONS(TYPE) static TYPE UNUSED
73c4941b 390#endif
30c87b55
MM
391#else
392# define INLINE_OPTIONS(TYPE) TYPE
393# define EXTERN_OPTIONS(TYPE) TYPE
73c4941b
MM
394#endif
395
30c87b55
MM
396#if (OPTIONS_INLINE & INLINE_LOCALS)
397# define STATIC_INLINE_OPTIONS(TYPE) static INLINE TYPE
73c4941b 398#else
30c87b55 399# define STATIC_INLINE_OPTIONS(TYPE) static TYPE
73c4941b 400#endif
30c87b55
MM
401
402
403/* os_emul is inlined with inline.c */
404
405#if defined(_INLINE_C_) && !defined(_OS_EMUL_C_) && (OS_EMUL_INLINE & INCLUDE_MODULE)
406# if (OS_EMUL_INLINE & INLINE_MODULE)
407# define INLINE_OS_EMUL(TYPE) static INLINE TYPE UNUSED
408# define EXTERN_OS_EMUL(TYPE) static TYPE UNUSED
409#else
410# define INLINE_OS_EMUL(TYPE) static TYPE UNUSED
411# define EXTERN_OS_EMUL(TYPE) static TYPE UNUSED
412#endif
413#else
414# define INLINE_OS_EMUL(TYPE) TYPE
415# define EXTERN_OS_EMUL(TYPE) TYPE
416#endif
417
418#if (OS_EMUL_INLINE & INLINE_LOCALS)
419# define STATIC_INLINE_OS_EMUL(TYPE) static INLINE TYPE
420#else
421# define STATIC_INLINE_OS_EMUL(TYPE) static TYPE
73c4941b
MM
422#endif
423
30c87b55
MM
424
425/* psim is actually not inlined */
426
427#if defined(_INLINE_C_) && !defined(_PSIM_C_) && (PSIM_INLINE & INCLUDE_MODULE)
428# if (PSIM_INLINE & INLINE_MODULE)
429# define INLINE_PSIM(TYPE) static INLINE TYPE UNUSED
430# define EXTERN_PSIM(TYPE) static TYPE UNUSED
73c4941b 431#else
30c87b55
MM
432# define INLINE_PSIM(TYPE) static TYPE UNUSED
433# define EXTERN_PSIM(TYPE) static TYPE UNUSED
73c4941b 434#endif
30c87b55
MM
435#else
436# define INLINE_PSIM(TYPE) TYPE
437# define EXTERN_PSIM(TYPE) TYPE
73c4941b
MM
438#endif
439
30c87b55
MM
440#if (PSIM_INLINE & INLINE_LOCALS)
441# define STATIC_INLINE_PSIM(TYPE) static INLINE TYPE
acb06d30 442#else
30c87b55 443# define STATIC_INLINE_PSIM(TYPE) static TYPE
acb06d30 444#endif
30c87b55
MM
445
446
447/* cap is inlined with inline.c */
448
449#if defined(_INLINE_C_) && !defined(_CAP_C_) && (CAP_INLINE & INCLUDE_MODULE)
450# if (CAP_INLINE & INLINE_MODULE)
451# define INLINE_CAP(TYPE) static INLINE TYPE UNUSED
452# define EXTERN_CAP(TYPE) static TYPE UNUSED
453#else
454# define INLINE_CAP(TYPE) static TYPE UNUSED
455# define EXTERN_CAP(TYPE) static TYPE UNUSED
456#endif
457#else
458# define INLINE_CAP(TYPE) TYPE
459# define EXTERN_CAP(TYPE) TYPE
acb06d30
MM
460#endif
461
30c87b55
MM
462#if (CAP_INLINE & INLINE_LOCALS)
463# define STATIC_INLINE_CAP(TYPE) static INLINE TYPE
464#else
465# define STATIC_INLINE_CAP(TYPE) static TYPE
466#endif
73c4941b
MM
467
468#endif