home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gdb-4.16-base.tgz / gdb-4.16-base.tar / fsf / gdb / sim / ppc / inline.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-19  |  12.2 KB  |  447 lines

  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)
  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
  39. #else
  40. # define INLINE_SIM_ENDIAN(TYPE) TYPE
  41. # define EXTERN_SIM_ENDIAN(TYPE) TYPE
  42. #endif
  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
  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.  
  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. /* icache is inlined with inline.c */
  74.  
  75. #if defined(_INLINE_C_) && !defined(_ICACHE_C_) && (ICACHE_INLINE & INCLUDE_MODULE)
  76. # if (ICACHE_INLINE & INLINE_MODULE)
  77. #  define INLINE_ICACHE(TYPE) static INLINE TYPE UNUSED
  78. #  define EXTERN_ICACHE(TYPE) static TYPE UNUSED
  79. #else
  80. #  define INLINE_ICACHE(TYPE) static TYPE UNUSED
  81. #  define EXTERN_ICACHE(TYPE) static TYPE UNUSED
  82. #endif
  83. #else
  84. # define INLINE_ICACHE(TYPE) TYPE
  85. # define EXTERN_ICACHE(TYPE) TYPE
  86. #endif
  87.  
  88. #if (ICACHE_INLINE & INLINE_LOCALS)
  89. # define STATIC_INLINE_ICACHE(TYPE) static INLINE TYPE
  90. #else
  91. # define STATIC_INLINE_ICACHE(TYPE) static TYPE
  92. #endif
  93.  
  94.  
  95. /* core is inlined with inline.c */
  96.  
  97. #if defined(_INLINE_C_) && !defined(_CORE_C_) && (CORE_INLINE & INCLUDE_MODULE)
  98. # if (CORE_INLINE & INLINE_MODULE)
  99. #  define INLINE_CORE(TYPE) static INLINE TYPE UNUSED
  100. #  define EXTERN_CORE(TYPE) static TYPE UNUSED
  101. #else
  102. #  define INLINE_CORE(TYPE) static TYPE UNUSED
  103. #  define EXTERN_CORE(TYPE) static TYPE UNUSED
  104. #endif
  105. #else
  106. # define INLINE_CORE(TYPE) TYPE
  107. # define EXTERN_CORE(TYPE) TYPE
  108. #endif
  109.  
  110. #if (CORE_INLINE & INLINE_LOCALS)
  111. # define STATIC_INLINE_CORE(TYPE) static INLINE TYPE
  112. #else
  113. # define STATIC_INLINE_CORE(TYPE) static TYPE
  114. #endif
  115.  
  116.  
  117. /* vm is inlined with inline.c */
  118.  
  119. #if defined(_INLINE_C_) && !defined(_VM_C_) && (VM_INLINE & INCLUDE_MODULE)
  120. # if (VM_INLINE & INLINE_MODULE)
  121. #  define INLINE_VM(TYPE) static INLINE TYPE UNUSED
  122. #  define EXTERN_VM(TYPE) static TYPE UNUSED
  123. #else
  124. #  define INLINE_VM(TYPE) static TYPE UNUSED
  125. #  define EXTERN_VM(TYPE) static TYPE UNUSED
  126. #endif
  127. #else
  128. # define INLINE_VM(TYPE) TYPE
  129. # define EXTERN_VM(TYPE) TYPE
  130. #endif
  131.  
  132. #if (VM_INLINE & INLINE_LOCALS)
  133. # define STATIC_INLINE_VM(TYPE) static INLINE TYPE
  134. #else
  135. # define STATIC_INLINE_VM(TYPE) static TYPE
  136. #endif
  137.  
  138.  
  139. /* cpu is always inlined */
  140.  
  141. #if !defined(_CPU_C_) && (CPU_INLINE & INCLUDE_MODULE)
  142. # if (CPU_INLINE & INLINE_MODULE)
  143. #  define INLINE_CPU(TYPE) static INLINE TYPE UNUSED
  144. #  define EXTERN_CPU(TYPE) static TYPE UNUSED
  145. #else
  146. #  define INLINE_CPU(TYPE) static TYPE UNUSED
  147. #  define EXTERN_CPU(TYPE) static TYPE UNUSED
  148. #endif
  149. #else
  150. # define INLINE_CPU(TYPE) TYPE
  151. # define EXTERN_CPU(TYPE) TYPE
  152. #endif
  153.  
  154. #if (CPU_INLINE & INLINE_LOCALS)
  155. # define STATIC_INLINE_CPU(TYPE) static INLINE TYPE
  156. #else
  157. # define STATIC_INLINE_CPU(TYPE) static TYPE
  158. #endif
  159.  
  160.  
  161. /* model is inlined with inline.c */
  162.  
  163. #if defined(_INLINE_C_) && !defined(_MODEL_C_) && (MODEL_INLINE & INCLUDE_MODULE)
  164. # if (MODEL_INLINE & INLINE_MODULE)
  165. #  define INLINE_MODEL(TYPE) static INLINE TYPE UNUSED
  166. #  define EXTERN_MODEL(TYPE) static TYPE UNUSED
  167. #else
  168. #  define INLINE_MODEL(TYPE) static TYPE UNUSED
  169. #  define EXTERN_MODEL(TYPE) static TYPE UNUSED
  170. #endif
  171. #else
  172. # define INLINE_MODEL(TYPE) TYPE
  173. # define EXTERN_MODEL(TYPE) TYPE
  174. #endif
  175.  
  176. #if (MODEL_INLINE & INLINE_LOCALS)
  177. # define STATIC_INLINE_MODEL(TYPE) static INLINE TYPE
  178. #else
  179. # define STATIC_INLINE_MODEL(TYPE) static TYPE
  180. #endif
  181.  
  182.  
  183. /* events is inlined with inline.c */
  184.  
  185. #if defined(_INLINE_C_) && !defined(_EVENTS_C_) && (EVENTS_INLINE & INCLUDE_MODULE)
  186. # if (EVENTS_INLINE & INLINE_MODULE)
  187. #  define INLINE_EVENTS(TYPE) static INLINE TYPE UNUSED
  188. #  define EXTERN_EVENTS(TYPE) static TYPE UNUSED
  189. #else
  190. #  define INLINE_EVENTS(TYPE) static TYPE UNUSED
  191. #  define EXTERN_EVENTS(TYPE) static TYPE UNUSED
  192. #endif
  193. #else
  194. # define INLINE_EVENTS(TYPE) TYPE
  195. # define EXTERN_EVENTS(TYPE) TYPE
  196. #endif
  197.  
  198. #if (EVENTS_INLINE & INLINE_LOCALS)
  199. # define STATIC_INLINE_EVENTS(TYPE) static INLINE TYPE
  200. #else
  201. # define STATIC_INLINE_EVENTS(TYPE) static TYPE
  202. #endif
  203.  
  204.  
  205. /* mon is inlined with inline.c */
  206.  
  207. #if defined(_INLINE_C_) && !defined(_MON_C_) && (MON_INLINE & INCLUDE_MODULE)
  208. # if (MON_INLINE & INLINE_MODULE)
  209. #  define INLINE_MON(TYPE) static INLINE TYPE UNUSED
  210. #  define EXTERN_MON(TYPE) static TYPE UNUSED
  211. #else
  212. #  define INLINE_MON(TYPE) static TYPE UNUSED
  213. #  define EXTERN_MON(TYPE) static TYPE UNUSED
  214. #endif
  215. #else
  216. # define INLINE_MON(TYPE) TYPE
  217. # define EXTERN_MON(TYPE) TYPE
  218. #endif
  219.  
  220. #if (MON_INLINE & INLINE_LOCALS)
  221. # define STATIC_INLINE_MON(TYPE) static INLINE TYPE
  222. #else
  223. # define STATIC_INLINE_MON(TYPE) static TYPE
  224. #endif
  225.  
  226.  
  227. /* registers is inlined with inline.c */
  228.  
  229. #if defined(_INLINE_C_) && !defined(_REGISTERS_C_) && (REGISTERS_INLINE & INCLUDE_MODULE)
  230. # if (REGISTERS_INLINE & INLINE_MODULE)
  231. #  define INLINE_REGISTERS(TYPE) static INLINE TYPE UNUSED
  232. #  define EXTERN_REGISTERS(TYPE) static TYPE UNUSED
  233. #else
  234. #  define INLINE_REGISTERS(TYPE) static TYPE UNUSED
  235. #  define EXTERN_REGISTERS(TYPE) static TYPE UNUSED
  236. #endif
  237. #else
  238. # define INLINE_REGISTERS(TYPE) TYPE
  239. # define EXTERN_REGISTERS(TYPE) TYPE
  240. #endif
  241.  
  242. #if (REGISTERS_INLINE & INLINE_LOCALS)
  243. # define STATIC_INLINE_REGISTERS(TYPE) static INLINE TYPE
  244. #else
  245. # define STATIC_INLINE_REGISTERS(TYPE) static TYPE
  246. #endif
  247.  
  248.  
  249. /* interrupts is inlined with inline.c */
  250.  
  251. #if defined(_INLINE_C_) && !defined(_INTERRUPTS_C_) && (INTERRUPTS_INLINE & INCLUDE_MODULE)
  252. # if (INTERRUPTS_INLINE & INLINE_MODULE)
  253. #  define INLINE_INTERRUPTS(TYPE) static INLINE TYPE UNUSED
  254. #  define EXTERN_INTERRUPTS(TYPE) static TYPE UNUSED
  255. #else
  256. #  define INLINE_INTERRUPTS(TYPE) static TYPE UNUSED
  257. #  define EXTERN_INTERRUPTS(TYPE) static TYPE UNUSED
  258. #endif
  259. #else
  260. # define INLINE_INTERRUPTS(TYPE) TYPE
  261. # define EXTERN_INTERRUPTS(TYPE) TYPE
  262. #endif
  263.  
  264. #if (INTERRUPTS_INLINE & INLINE_LOCALS)
  265. # define STATIC_INLINE_INTERRUPTS(TYPE) static INLINE TYPE
  266. #else
  267. # define STATIC_INLINE_INTERRUPTS(TYPE) static TYPE
  268. #endif
  269.  
  270.  
  271. /* device is inlined with inline.c */
  272.  
  273. #if defined(_INLINE_C_) && !defined(_DEVICE_C_) && (DEVICE_INLINE & INCLUDE_MODULE)
  274. # if (DEVICE_INLINE & INLINE_MODULE)
  275. #  define INLINE_DEVICE(TYPE) static INLINE TYPE UNUSED
  276. #  define EXTERN_DEVICE(TYPE) static TYPE UNUSED
  277. #else
  278. #  define INLINE_DEVICE(TYPE) static TYPE UNUSED
  279. #  define EXTERN_DEVICE(TYPE) static TYPE UNUSED
  280. #endif
  281. #else
  282. # define INLINE_DEVICE(TYPE) TYPE
  283. # define EXTERN_DEVICE(TYPE) TYPE
  284. #endif
  285.  
  286. #if (DEVICE_INLINE & INLINE_LOCALS)
  287. # define STATIC_INLINE_DEVICE(TYPE) static INLINE TYPE
  288. #else
  289. # define STATIC_INLINE_DEVICE(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.  
  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 INLINE_SEMANTICS(TYPE) static INLINE TYPE UNUSED
  320. #  define EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
  321. #else
  322. #  define INLINE_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
  323. #  define EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM
  324. #endif
  325. #else
  326. # define INLINE_SEMANTICS(TYPE) TYPE REGPARM
  327. # define EXTERN_SEMANTICS(TYPE) TYPE REGPARM
  328. #endif
  329.  
  330. #if (SEMANTICS_INLINE & INLINE_LOCALS)
  331. # define STATIC_INLINE_SEMANTICS(TYPE) static INLINE TYPE
  332. #else
  333. # define STATIC_INLINE_SEMANTICS(TYPE) static TYPE REGPARM
  334. #endif
  335.  
  336.  
  337. /* idecode is inlined with inline.c */
  338.  
  339. #if defined(_INLINE_C_) && !defined(_IDECODE_C_) && (IDECODE_INLINE & INCLUDE_MODULE)
  340. # if (IDECODE_INLINE & INLINE_MODULE)
  341. #  define INLINE_IDECODE(TYPE) static INLINE TYPE UNUSED
  342. #  define EXTERN_IDECODE(TYPE) static TYPE UNUSED REGPARM
  343. #else
  344. #  define INLINE_IDECODE(TYPE) static TYPE UNUSED REGPARM
  345. #  define EXTERN_IDECODE(TYPE) static TYPE UNUSED REGPARM
  346. #endif
  347. #else
  348. # define INLINE_IDECODE(TYPE) TYPE REGPARM
  349. # define EXTERN_IDECODE(TYPE) TYPE REGPARM
  350. #endif
  351.  
  352. #if (IDECODE_INLINE & INLINE_LOCALS)
  353. # define STATIC_INLINE_IDECODE(TYPE) static INLINE TYPE
  354. #else
  355. # define STATIC_INLINE_IDECODE(TYPE) static TYPE REGPARM
  356. #endif
  357.  
  358.  
  359. /* options is inlined with inline.c */
  360.  
  361. #if defined(_INLINE_C_) && !defined(_OPTIONS_C_) && (OPTIONS_INLINE & INCLUDE_MODULE)
  362. # if (OPTIONS_INLINE & INLINE_MODULE)
  363. #  define INLINE_OPTIONS(TYPE) static INLINE TYPE UNUSED
  364. #  define EXTERN_OPTIONS(TYPE) static TYPE UNUSED
  365. #else
  366. #  define INLINE_OPTIONS(TYPE) static TYPE UNUSED
  367. #  define EXTERN_OPTIONS(TYPE) static TYPE UNUSED
  368. #endif
  369. #else
  370. # define INLINE_OPTIONS(TYPE) TYPE
  371. # define EXTERN_OPTIONS(TYPE) TYPE
  372. #endif
  373.  
  374. #if (OPTIONS_INLINE & INLINE_LOCALS)
  375. # define STATIC_INLINE_OPTIONS(TYPE) static INLINE TYPE
  376. #else
  377. # define STATIC_INLINE_OPTIONS(TYPE) static TYPE
  378. #endif
  379.  
  380.  
  381. /* os_emul is inlined with inline.c */
  382.  
  383. #if defined(_INLINE_C_) && !defined(_OS_EMUL_C_) && (OS_EMUL_INLINE & INCLUDE_MODULE)
  384. # if (OS_EMUL_INLINE & INLINE_MODULE)
  385. #  define INLINE_OS_EMUL(TYPE) static INLINE TYPE UNUSED
  386. #  define EXTERN_OS_EMUL(TYPE) static TYPE UNUSED
  387. #else
  388. #  define INLINE_OS_EMUL(TYPE) static TYPE UNUSED
  389. #  define EXTERN_OS_EMUL(TYPE) static TYPE UNUSED
  390. #endif
  391. #else
  392. # define INLINE_OS_EMUL(TYPE) TYPE
  393. # define EXTERN_OS_EMUL(TYPE) TYPE
  394. #endif
  395.  
  396. #if (OS_EMUL_INLINE & INLINE_LOCALS)
  397. # define STATIC_INLINE_OS_EMUL(TYPE) static INLINE TYPE
  398. #else
  399. # define STATIC_INLINE_OS_EMUL(TYPE) static TYPE
  400. #endif
  401.  
  402.  
  403. /* psim is inlined with inline.c */
  404.  
  405. #if defined(_INLINE_C_) && !defined(_PSIM_C_) && (PSIM_INLINE & INCLUDE_MODULE)
  406. # if (PSIM_INLINE & INLINE_MODULE)
  407. #  define INLINE_PSIM(TYPE) static INLINE TYPE UNUSED
  408. #  define EXTERN_PSIM(TYPE) static TYPE UNUSED
  409. #else
  410. #  define INLINE_PSIM(TYPE) static TYPE UNUSED
  411. #  define EXTERN_PSIM(TYPE) static TYPE UNUSED
  412. #endif
  413. #else
  414. # define INLINE_PSIM(TYPE) TYPE
  415. # define EXTERN_PSIM(TYPE) TYPE
  416. #endif
  417.  
  418. #if (PSIM_INLINE & INLINE_LOCALS)
  419. # define STATIC_INLINE_PSIM(TYPE) static INLINE TYPE
  420. #else
  421. # define STATIC_INLINE_PSIM(TYPE) static TYPE
  422. #endif
  423.  
  424.  
  425. /* cap is inlined with inline.c */
  426.  
  427. #if defined(_INLINE_C_) && !defined(_CAP_C_) && (CAP_INLINE & INCLUDE_MODULE)
  428. # if (CAP_INLINE & INLINE_MODULE)
  429. #  define INLINE_CAP(TYPE) static INLINE TYPE UNUSED
  430. #  define EXTERN_CAP(TYPE) static TYPE UNUSED
  431. #else
  432. #  define INLINE_CAP(TYPE) static TYPE UNUSED
  433. #  define EXTERN_CAP(TYPE) static TYPE UNUSED
  434. #endif
  435. #else
  436. # define INLINE_CAP(TYPE) TYPE
  437. # define EXTERN_CAP(TYPE) TYPE
  438. #endif
  439.  
  440. #if (CAP_INLINE & INLINE_LOCALS)
  441. # define STATIC_INLINE_CAP(TYPE) static INLINE TYPE
  442. #else
  443. # define STATIC_INLINE_CAP(TYPE) static TYPE
  444. #endif
  445.  
  446. #endif
  447.