sim/testsuite/: split up arch-specific changelogs
[deliverable/binutils-gdb.git] / sim / ppc / inline.h
CommitLineData
c906108c
SS
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
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)
d29d5195
MG
33# define INLINE_PSIM_ENDIAN(TYPE) static INLINE TYPE UNUSED
34# define EXTERN_PSIM_ENDIAN(TYPE) static TYPE UNUSED
c906108c 35# else
d29d5195
MG
36# define INLINE_PSIM_ENDIAN(TYPE) static TYPE UNUSED
37# define EXTERN_PSIM_ENDIAN(TYPE) static TYPE UNUSED
c906108c
SS
38# endif
39#else
d29d5195
MG
40# define INLINE_PSIM_ENDIAN(TYPE) TYPE
41# define EXTERN_PSIM_ENDIAN(TYPE) TYPE
c906108c
SS
42#endif
43
d29d5195
MG
44#if (SIM_ENDIAN_INLINE & PSIM_INLINE_LOCALS)
45# define STATIC_INLINE_PSIM_ENDIAN(TYPE) static INLINE TYPE
c906108c 46#else
d29d5195 47# define STATIC_INLINE_PSIM_ENDIAN(TYPE) static TYPE
c906108c
SS
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) 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
61#else
62# define INLINE_BITS(TYPE) TYPE
63# define EXTERN_BITS(TYPE) TYPE
64#endif
65
d29d5195 66#if (BITS_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
78# define EXTERN_CORE(TYPE) static TYPE UNUSED
79#else
80# define INLINE_CORE(TYPE) static TYPE UNUSED
81# define EXTERN_CORE(TYPE) static TYPE UNUSED
82#endif
83#else
84# define INLINE_CORE(TYPE) TYPE
85# define EXTERN_CORE(TYPE) TYPE
86#endif
87
d29d5195 88#if (CORE_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) 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
105#else
106# define INLINE_VM(TYPE) TYPE
107# define EXTERN_VM(TYPE) TYPE
108#endif
109
d29d5195 110#if (VM_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
122# define EXTERN_CPU(TYPE) static TYPE UNUSED
123#else
124# define INLINE_CPU(TYPE) static TYPE UNUSED
125# define EXTERN_CPU(TYPE) static TYPE UNUSED
126#endif
127#else
128# define INLINE_CPU(TYPE) TYPE
129# define EXTERN_CPU(TYPE) TYPE
130#endif
131
d29d5195 132#if (CPU_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
144# define EXTERN_MODEL(TYPE) static TYPE UNUSED
145#else
146# define INLINE_MODEL(TYPE) static TYPE UNUSED
147# define EXTERN_MODEL(TYPE) static TYPE UNUSED
148#endif
149#else
150# define INLINE_MODEL(TYPE) TYPE
151# define EXTERN_MODEL(TYPE) TYPE
152#endif
153
d29d5195 154#if (MODEL_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) 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
d29d5195 176#if (EVENTS_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
188# define EXTERN_MON(TYPE) static TYPE UNUSED
189#else
190# define INLINE_MON(TYPE) static TYPE UNUSED
191# define EXTERN_MON(TYPE) static TYPE UNUSED
192#endif
193#else
194# define INLINE_MON(TYPE) TYPE
195# define EXTERN_MON(TYPE) TYPE
196#endif
197
d29d5195 198#if (MON_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) 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
d29d5195 220#if (REGISTERS_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
232# define EXTERN_INTERRUPTS(TYPE) static TYPE UNUSED
233#else
234# define INLINE_INTERRUPTS(TYPE) static TYPE UNUSED
235# define EXTERN_INTERRUPTS(TYPE) static TYPE UNUSED
236#endif
237#else
238# define INLINE_INTERRUPTS(TYPE) TYPE
239# define EXTERN_INTERRUPTS(TYPE) TYPE
240#endif
241
d29d5195 242#if (INTERRUPTS_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) 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
262#endif
263
d29d5195 264#if (DEVICE_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
276# define EXTERN_TREE(TYPE) static TYPE UNUSED
277#else
278# define INLINE_TREE(TYPE) static TYPE UNUSED
279# define EXTERN_TREE(TYPE) static TYPE UNUSED
280#endif
281#else
282# define INLINE_TREE(TYPE) TYPE
283# define EXTERN_TREE(TYPE) TYPE
284#endif
285
d29d5195 286#if (TREE_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
298# define EXTERN_SPREG(TYPE) static TYPE UNUSED
299#else
300# define INLINE_SPREG(TYPE) static TYPE UNUSED
301# define EXTERN_SPREG(TYPE) static TYPE UNUSED
302#endif
303#else
304# define INLINE_SPREG(TYPE) TYPE
305# define EXTERN_SPREG(TYPE) TYPE
306#endif
307
d29d5195 308#if (SPREG_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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)
d29d5195
MG
319# define PSIM_INLINE_SEMANTICS(TYPE) static INLINE TYPE UNUSED
320# define PSIM_EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
c906108c 321#else
d29d5195
MG
322# define PSIM_INLINE_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
323# define PSIM_EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
c906108c
SS
324#endif
325#else
d29d5195
MG
326# define PSIM_INLINE_SEMANTICS(TYPE) TYPE REGPARM
327# define PSIM_EXTERN_SEMANTICS(TYPE) TYPE REGPARM
c906108c
SS
328#endif
329
d29d5195
MG
330#if 0 /* this isn't used */
331#if (SEMANTICS_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
332# define STATIC_INLINE_SEMANTICS(TYPE) static INLINE TYPE
333#else
334# define STATIC_INLINE_SEMANTICS(TYPE) static TYPE REGPARM
335#endif
d29d5195 336#endif
c906108c
SS
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)
d29d5195 343# define PSIM_INLINE_IDECODE(TYPE) static INLINE TYPE UNUSED
c906108c
SS
344# define EXTERN_IDECODE(TYPE) static TYPE UNUSED REGPARM
345#else
d29d5195 346# define PSIM_INLINE_IDECODE(TYPE) static TYPE UNUSED REGPARM
c906108c
SS
347# define EXTERN_IDECODE(TYPE) static TYPE UNUSED REGPARM
348#endif
349#else
d29d5195 350# define PSIM_INLINE_IDECODE(TYPE) TYPE REGPARM
c906108c
SS
351# define EXTERN_IDECODE(TYPE) TYPE REGPARM
352#endif
353
d29d5195
MG
354#if 0 /* this isn't used */
355#if (IDECODE_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
356# define STATIC_INLINE_IDECODE(TYPE) static INLINE TYPE
357#else
358# define STATIC_INLINE_IDECODE(TYPE) static TYPE REGPARM
359#endif
d29d5195 360#endif
c906108c
SS
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)
d29d5195 367# define PSIM_INLINE_ICACHE(TYPE) static INLINE TYPE UNUSED
c906108c
SS
368# define EXTERN_ICACHE(TYPE) static TYPE UNUSED REGPARM
369#else
d29d5195 370# define PSIM_INLINE_ICACHE(TYPE) static TYPE UNUSED REGPARM
c906108c
SS
371# define EXTERN_ICACHE(TYPE) static TYPE UNUSED REGPARM
372#endif
373#else
d29d5195 374# define PSIM_INLINE_ICACHE(TYPE) TYPE REGPARM
c906108c
SS
375# define EXTERN_ICACHE(TYPE) TYPE REGPARM
376#endif
377
d29d5195
MG
378#if 0 /* this isn't used */
379#if (ICACHE_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
380# define STATIC_INLINE_ICACHE(TYPE) static INLINE TYPE
381#else
382# define STATIC_INLINE_ICACHE(TYPE) static TYPE REGPARM
383#endif
d29d5195 384#endif
c906108c
SS
385
386
387/* support is always inlined */
388
389#if !defined(_SUPPORT_C_) && (SUPPORT_INLINE & INCLUDE_MODULE)
390# if (SUPPORT_INLINE & INLINE_MODULE)
d29d5195 391# define PSIM_INLINE_SUPPORT(TYPE) static INLINE TYPE UNUSED
c906108c
SS
392# define EXTERN_SUPPORT(TYPE) static TYPE UNUSED
393#else
d29d5195 394# define PSIM_INLINE_SUPPORT(TYPE) static TYPE UNUSED
c906108c
SS
395# define EXTERN_SUPPORT(TYPE) static TYPE UNUSED
396#endif
397#else
d29d5195 398# define PSIM_INLINE_SUPPORT(TYPE) TYPE
c906108c
SS
399# define EXTERN_SUPPORT(TYPE) TYPE
400#endif
401
d29d5195
MG
402#if 0 /* this isn't used */
403#if (SUPPORT_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
404# define STATIC_INLINE_SUPPORT(TYPE) static INLINE TYPE
405#else
406# define STATIC_INLINE_SUPPORT(TYPE) static TYPE
407#endif
d29d5195 408#endif
c906108c
SS
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) static INLINE TYPE UNUSED
416# define EXTERN_OPTIONS(TYPE) static TYPE UNUSED
417#else
418# define INLINE_OPTIONS(TYPE) static TYPE UNUSED
419# define EXTERN_OPTIONS(TYPE) static TYPE UNUSED
420#endif
421#else
422# define INLINE_OPTIONS(TYPE) TYPE
423# define EXTERN_OPTIONS(TYPE) TYPE
424#endif
425
d29d5195 426#if (OPTIONS_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
438# define EXTERN_OS_EMUL(TYPE) static TYPE UNUSED
439#else
440# define INLINE_OS_EMUL(TYPE) static TYPE UNUSED
441# define EXTERN_OS_EMUL(TYPE) static TYPE UNUSED
442#endif
443#else
444# define INLINE_OS_EMUL(TYPE) TYPE
445# define EXTERN_OS_EMUL(TYPE) TYPE
446#endif
447
d29d5195 448#if (OS_EMUL_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
460# define EXTERN_PSIM(TYPE) static TYPE UNUSED
461#else
462# define INLINE_PSIM(TYPE) static TYPE UNUSED
463# define EXTERN_PSIM(TYPE) static TYPE UNUSED
464#endif
465#else
466# define INLINE_PSIM(TYPE) TYPE
467# define EXTERN_PSIM(TYPE) TYPE
468#endif
469
d29d5195 470#if (PSIM_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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) static INLINE TYPE UNUSED
482# define EXTERN_CAP(TYPE) static TYPE UNUSED
483#else
484# define INLINE_CAP(TYPE) static TYPE UNUSED
485# define EXTERN_CAP(TYPE) static TYPE UNUSED
486#endif
487#else
488# define INLINE_CAP(TYPE) TYPE
489# define EXTERN_CAP(TYPE) TYPE
490#endif
491
d29d5195 492#if (CAP_INLINE & PSIM_INLINE_LOCALS)
c906108c
SS
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.547407 seconds and 4 git commands to generate.