source: trunk/include/odinwrap.h@ 2129

Last change on this file since 2129 was 1953, checked in by phaller, 26 years ago

Fix: macro errors

File size: 69.1 KB
RevLine 
[1953]1/* $Id: odinwrap.h,v 1.17 1999-12-03 01:20:02 phaller Exp $ */
[473]2
3/*
4 * Project Odin Software License can be found in LICENSE.TXT
5 *
6 * ODIN FS: Selector function wrapper macros
7 *
8 * Copyright 1999 Patrick Haller
9 *
10 */
11
12
13#ifndef _ODINWRAP_H_
[1545]14#define _ODINWRAP_H_
[473]15
16
17/****************************************************************************
18 * Defines *
19 ****************************************************************************/
20
[537]21
[533]22#define ODIN_INTERNAL _Optlink
[473]23
24
[475]25#ifdef DEBUG
26# define ODINDEBUGCHANNEL(a) static char* pszOdinDebugChannel=#a;
27#else
28# define ODINDEBUGCHANNEL(a)
29#endif
30
31
[1642]32//SvL: Define this to use the internal wrapper function of a specific api
33#define ODIN_EXTERN(a) ODIN_INTERNAL ODIN_##a
34
[475]35#ifdef DEBUG
36
[1439]37//@@@PH 1999/10/25 IBM VAC++ debug memory support
38#include <malloc.h>
39
[1669]40#if 1
41#define CheckFS(a)
42#else
43//SvL: Eases locating apis that corrupt FS
44#define error_FSSelector "FS Selector for thread %d corrupted!!!"
45
46extern int IsExeStarted(); //kernel32
47
48#define CheckFS(sel) if(sel == 0x150b && IsExeStarted()) { \
49 dprintf(((char *)error_FSSelector, GetCurrentThreadId())); \
50 }
51#endif
52
[1545]53//SvL: Only check the heap very frequently when there are problems
54//#define DEBUG_ODINHEAP
55
56#ifdef DEBUG_ODINHEAP
57#define ODIN_HEAPCHECK() _heap_check()
58#else
59#define ODIN_HEAPCHECK()
60#endif
61
[473]62/****************************************************************************
[475]63 * General Wrapper Macros (debug instrumented) *
64 ****************************************************************************/
65
66/* ---------- 0 parameters ---------- */
67#define ODINFUNCTION0(cRet,cName) \
[484]68 cRet ODIN_INTERNAL ODIN_##cName (void); \
69 cRet WINAPI cName(void) \
[475]70 { \
71 unsigned short sel = RestoreOS2FS(); \
72 dprintf(("%s: "#cRet" "#cName"() enter\n", \
73 pszOdinDebugChannel)); \
[1669]74 CheckFS(sel) \
75 _heap_check(); \
[594]76 cRet rc = ODIN_##cName(); \
[1669]77 _heap_check(); \
[475]78 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
79 pszOdinDebugChannel, \
80 rc)); \
81 SetFS(sel); \
82 return rc; \
83 } \
84 \
[484]85 cRet ODIN_INTERNAL ODIN_##cName (void)
[475]86
87
88#define ODINPROCEDURE0(cName) \
[484]89 void ODIN_INTERNAL ODIN_##cName (void); \
90 void WINAPI cName(void) \
[475]91 { \
92 unsigned short sel = RestoreOS2FS(); \
93 dprintf(("%s: void "#cName"() enter\n", \
94 pszOdinDebugChannel)); \
[1669]95 CheckFS(sel) \
96 _heap_check(); \
[491]97 ODIN_##cName(); \
[1669]98 _heap_check(); \
[475]99 dprintf(("%s: void "#cName"() leave\n", \
100 pszOdinDebugChannel)); \
101 SetFS(sel); \
102 } \
103 \
[484]104 void ODIN_INTERNAL ODIN_##cName (void)
[475]105
106
107/* ---------- 1 parameters ---------- */
108#define ODINFUNCTION1(cRet,cName,t1,a1) \
[484]109 cRet ODIN_INTERNAL ODIN_##cName (t1 a1); \
110 cRet WINAPI cName(t1 a1) \
[475]111 { \
112 unsigned short sel = RestoreOS2FS(); \
113 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh) enter\n", \
114 pszOdinDebugChannel, \
115 a1)); \
[1669]116 CheckFS(sel) \
117 _heap_check(); \
[491]118 cRet rc = ODIN_##cName(a1); \
[1669]119 _heap_check(); \
[475]120 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
121 pszOdinDebugChannel, \
122 rc)); \
123 SetFS(sel); \
124 return rc; \
125 } \
126 \
[484]127 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]128
129#define ODINPROCEDURE1(cName,t1,a1) \
[484]130 void ODIN_INTERNAL ODIN_##cName (t1 a1); \
131 void WINAPI cName(t1 a1) \
[475]132 { \
133 unsigned short sel = RestoreOS2FS(); \
134 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh) enter\n", \
135 pszOdinDebugChannel, \
136 a1)); \
[1669]137 CheckFS(sel) \
138 _heap_check(); \
[491]139 ODIN_##cName(a1); \
[1669]140 _heap_check(); \
[475]141 dprintf(("%s: void "#cName"() leave\n", \
142 pszOdinDebugChannel)); \
143 SetFS(sel); \
144 } \
145 \
[484]146 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[475]147
148
149/* ---------- 2 parameters ---------- */
150#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[484]151 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
152 cRet WINAPI cName(t1 a1,t2 a2) \
[475]153 { \
154 unsigned short sel = RestoreOS2FS(); \
155 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
156 pszOdinDebugChannel, \
157 a1,a2)); \
[1669]158 CheckFS(sel) \
159 _heap_check(); \
[491]160 cRet rc = ODIN_##cName(a1,a2); \
[1669]161 _heap_check(); \
[475]162 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
163 pszOdinDebugChannel, \
164 rc)); \
165 SetFS(sel); \
166 return rc; \
167 } \
168 \
[484]169 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]170
171#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]172 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
173 void WINAPI cName(t1 a1,t2 a2) \
[475]174 { \
175 unsigned short sel = RestoreOS2FS(); \
176 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
177 pszOdinDebugChannel, \
178 a1,a2)); \
[1669]179 CheckFS(sel) \
180 _heap_check(); \
[491]181 ODIN_##cName(a1,a2); \
[1669]182 _heap_check(); \
[475]183 dprintf(("%s: void "#cName"() leave\n", \
184 pszOdinDebugChannel)); \
185 SetFS(sel); \
186 } \
187 \
[484]188 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[475]189
190
191/* ---------- 3 parameters ---------- */
192#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]193 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
194 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]195 { \
196 unsigned short sel = RestoreOS2FS(); \
197 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
198 pszOdinDebugChannel, \
199 a1,a2,a3)); \
[1669]200 CheckFS(sel) \
201 _heap_check(); \
[491]202 cRet rc = ODIN_##cName(a1,a2,a3); \
[1669]203 _heap_check(); \
[475]204 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
205 pszOdinDebugChannel, \
206 rc)); \
207 SetFS(sel); \
208 return rc; \
209 } \
210 \
[484]211 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]212
213#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]214 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
215 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[475]216 { \
217 unsigned short sel = RestoreOS2FS(); \
218 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
219 pszOdinDebugChannel, \
220 a1,a2,a3)); \
[1669]221 CheckFS(sel) \
222 _heap_check(); \
[491]223 ODIN_##cName(a1,a2,a3); \
[1669]224 _heap_check(); \
[475]225 dprintf(("%s: void "#cName"() leave\n", \
226 pszOdinDebugChannel)); \
227 SetFS(sel); \
228 } \
229 \
[484]230 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[475]231
232
233/* ---------- 4 parameters ---------- */
234#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]235 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
236 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]237 { \
238 unsigned short sel = RestoreOS2FS(); \
[1437]239 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
[475]240 pszOdinDebugChannel, \
241 a1,a2,a3,a4)); \
[1669]242 CheckFS(sel) \
243 _heap_check(); \
[491]244 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[1669]245 _heap_check(); \
[475]246 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
247 pszOdinDebugChannel, \
248 rc)); \
249 SetFS(sel); \
250 return rc; \
251 } \
252 \
[484]253 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]254
255#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]256 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
257 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[475]258 { \
259 unsigned short sel = RestoreOS2FS(); \
260 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
261 pszOdinDebugChannel, \
262 a1,a2,a3,a4)); \
[1669]263 CheckFS(sel) \
264 _heap_check(); \
[491]265 ODIN_##cName(a1,a2,a3,a4); \
[1669]266 _heap_check(); \
[475]267 dprintf(("%s: void "#cName"() leave\n", \
268 pszOdinDebugChannel)); \
269 SetFS(sel); \
270 } \
271 \
[484]272 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[475]273
274
275/* ---------- 5 parameters ---------- */
276#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]277 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
278 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]279 { \
280 unsigned short sel = RestoreOS2FS(); \
[1437]281 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
[475]282 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
283 pszOdinDebugChannel, \
284 a1,a2,a3,a4,a5)); \
[1669]285 CheckFS(sel) \
286 _heap_check(); \
[491]287 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[1669]288 _heap_check(); \
[475]289 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
290 pszOdinDebugChannel, \
291 rc)); \
292 SetFS(sel); \
293 return rc; \
294 } \
295 \
[484]296 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]297
298#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]299 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
300 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[475]301 { \
302 unsigned short sel = RestoreOS2FS(); \
303 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
304 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
305 pszOdinDebugChannel, \
306 a1,a2,a3,a4,a5)); \
[1669]307 CheckFS(sel) \
308 _heap_check(); \
[491]309 ODIN_##cName(a1,a2,a3,a4,a5); \
[1669]310 _heap_check(); \
[475]311 dprintf(("%s: void "#cName"() leave\n", \
312 pszOdinDebugChannel)); \
313 SetFS(sel); \
314 } \
315 \
[484]316 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[475]317
318
319/* ---------- 6 parameters ---------- */
320#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]321 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
322 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]323 { \
324 unsigned short sel = RestoreOS2FS(); \
[1437]325 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]326 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
[475]327 pszOdinDebugChannel, \
[1437]328 a1,a2,a3,a4,a5,a6)); \
[1669]329 CheckFS(sel) \
330 _heap_check(); \
[491]331 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[1669]332 _heap_check(); \
[475]333 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
334 pszOdinDebugChannel, \
335 rc)); \
336 SetFS(sel); \
337 return rc; \
338 } \
339 \
[484]340 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]341
342#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]343 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
344 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[475]345 { \
346 unsigned short sel = RestoreOS2FS(); \
[476]347 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
348 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
[475]349 pszOdinDebugChannel, \
[1437]350 a1,a2,a3,a4,a5,a6)); \
[1669]351 CheckFS(sel) \
352 _heap_check(); \
[491]353 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[1669]354 _heap_check(); \
[475]355 dprintf(("%s: void "#cName"() leave\n", \
356 pszOdinDebugChannel)); \
357 SetFS(sel); \
358 } \
359 \
[484]360 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[475]361
362
363/* ---------- 7 parameters ---------- */
364#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]365 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
366 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]367 { \
368 unsigned short sel = RestoreOS2FS(); \
[1437]369 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]370 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
[475]371 pszOdinDebugChannel, \
[1437]372 a1,a2,a3,a4,a5,a6,a7)); \
[1669]373 CheckFS(sel) \
374 _heap_check(); \
[491]375 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[1669]376 _heap_check(); \
[475]377 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
378 pszOdinDebugChannel, \
379 rc)); \
380 SetFS(sel); \
381 return rc; \
382 } \
383 \
[484]384 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]385
386#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]387 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
388 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[475]389 { \
390 unsigned short sel = RestoreOS2FS(); \
[476]391 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
392 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
[475]393 pszOdinDebugChannel, \
[1437]394 a1,a2,a3,a4,a5,a6,a7)); \
[1669]395 CheckFS(sel) \
396 _heap_check(); \
[491]397 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[1669]398 _heap_check(); \
[475]399 dprintf(("%s: void "#cName"() leave\n", \
400 pszOdinDebugChannel)); \
401 SetFS(sel); \
402 } \
403 \
[484]404 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[475]405
406
407/* ---------- 8 parameters ---------- */
408#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]409 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
410 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]411 { \
412 unsigned short sel = RestoreOS2FS(); \
[1437]413 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]414 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
415 ", "#t8" "#a8"=%08xh) enter\n", \
[475]416 pszOdinDebugChannel, \
[1437]417 a1,a2,a3,a4,a5,a6,a7,a8)); \
[1669]418 CheckFS(sel) \
419 _heap_check(); \
[491]420 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[1669]421 _heap_check(); \
[475]422 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
423 pszOdinDebugChannel, \
424 rc)); \
425 SetFS(sel); \
426 return rc; \
427 } \
428 \
[484]429 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]430
431#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]432 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
433 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[475]434 { \
435 unsigned short sel = RestoreOS2FS(); \
[476]436 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
437 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
438 ", "#t8" "#a8"=%08xh) enter\n", \
[475]439 pszOdinDebugChannel, \
[1437]440 a1,a2,a3,a4,a5,a6,a7,a8)); \
[1669]441 _heap_check(); \
442 CheckFS(sel) \
[491]443 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[1669]444 _heap_check(); \
[475]445 dprintf(("%s: void "#cName"() leave\n", \
446 pszOdinDebugChannel)); \
447 SetFS(sel); \
448 } \
449 \
[484]450 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[475]451
452
453/* ---------- 9 parameters ---------- */
454#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]455 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
456 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]457 { \
458 unsigned short sel = RestoreOS2FS(); \
[476]459 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
460 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
461 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh) enter\n", \
[475]462 pszOdinDebugChannel, \
[1437]463 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[1669]464 CheckFS(sel) \
465 _heap_check(); \
[491]466 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[1669]467 _heap_check(); \
[475]468 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
469 pszOdinDebugChannel, \
470 rc)); \
471 SetFS(sel); \
472 return rc; \
473 } \
474 \
[484]475 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]476
477#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]478 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
479 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]480 { \
481 unsigned short sel = RestoreOS2FS(); \
[476]482 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
483 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
484 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh) enter\n", \
[475]485 pszOdinDebugChannel, \
[1437]486 a1,a2,a3,a4,a5,a6,a7,a8,a9)); \
[1669]487 CheckFS(sel) \
488 _heap_check(); \
[491]489 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[1669]490 _heap_check(); \
[475]491 dprintf(("%s: void "#cName"() leave\n", \
492 pszOdinDebugChannel)); \
493 SetFS(sel); \
494 } \
495 \
[484]496 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]497
498
499/* ---------- 10 parameters ---------- */
500#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]501 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
502 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]503 { \
504 unsigned short sel = RestoreOS2FS(); \
[1437]505 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]506 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
507 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh) enter\n", \
[475]508 pszOdinDebugChannel, \
[1437]509 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
[1669]510 CheckFS(sel) \
511 _heap_check(); \
[491]512 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[1669]513 _heap_check(); \
[475]514 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
515 pszOdinDebugChannel, \
516 rc)); \
517 SetFS(sel); \
518 return rc; \
519 } \
520 \
[484]521 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
[475]522
523#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]524 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
525 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]526 { \
527 unsigned short sel = RestoreOS2FS(); \
[476]528 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
529 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
530 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh) enter\n", \
[475]531 pszOdinDebugChannel, \
532 a1,a2,a3)); \
[1669]533 CheckFS(sel) \
534 _heap_check(); \
[491]535 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[1669]536 _heap_check(); \
[475]537 dprintf(("%s: void "#cName"() leave\n", \
538 pszOdinDebugChannel)); \
539 SetFS(sel); \
540 } \
541 \
[484]542 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
[475]543
544
545/* ---------- 11 parameters ---------- */
546#define ODINFUNCTION11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
[484]547 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
548 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
[475]549 { \
550 unsigned short sel = RestoreOS2FS(); \
[1437]551 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]552 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
553 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh) enter\n", \
[475]554 pszOdinDebugChannel, \
[1437]555 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[1669]556 CheckFS(sel) \
557 _heap_check(); \
[491]558 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[1669]559 _heap_check(); \
[475]560 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
561 pszOdinDebugChannel, \
562 rc)); \
563 SetFS(sel); \
564 return rc; \
565 } \
566 \
[484]567 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
[475]568
569#define ODINPROCEDURE11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
[484]570 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
571 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
[475]572 { \
573 unsigned short sel = RestoreOS2FS(); \
[476]574 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
575 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
576 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh) enter\n", \
[475]577 pszOdinDebugChannel, \
[1437]578 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
[1669]579 CheckFS(sel) \
580 _heap_check(); \
[491]581 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[1669]582 _heap_check(); \
[475]583 dprintf(("%s: void "#cName"() leave\n", \
584 pszOdinDebugChannel)); \
585 SetFS(sel); \
586 } \
587 \
[484]588 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
[475]589
590
591/* ---------- 12 parameters ---------- */
592#define ODINFUNCTION12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
[484]593 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
594 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
[475]595 { \
596 unsigned short sel = RestoreOS2FS(); \
[1437]597 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
[476]598 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
599 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
600 ", "#t12" "#a12"=%08xh) enter\n", \
[475]601 pszOdinDebugChannel, \
[1437]602 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[1669]603 CheckFS(sel) \
604 _heap_check(); \
[491]605 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[1669]606 _heap_check(); \
[475]607 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
608 pszOdinDebugChannel, \
609 rc)); \
610 SetFS(sel); \
611 return rc; \
612 } \
613 \
[484]614 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
[475]615
616#define ODINPROCEDURE12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
[484]617 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
618 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
[475]619 { \
620 unsigned short sel = RestoreOS2FS(); \
[476]621 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
622 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
623 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
624 ", "#t12" "#a12"=%08xh) enter\n", \
[475]625 pszOdinDebugChannel, \
[1696]626 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
[1669]627 CheckFS(sel) \
628 _heap_check(); \
[491]629 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[1669]630 _heap_check(); \
[475]631 dprintf(("%s: void "#cName"() leave\n", \
632 pszOdinDebugChannel)); \
633 SetFS(sel); \
634 } \
635 \
[484]636 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
[475]637
638
[1696]639/* ---------- 13 parameters ---------- */
640#define ODINFUNCTION13(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
641 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
642 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
643 { \
644 unsigned short sel = RestoreOS2FS(); \
645 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
646 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
647 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
648 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh) enter\n", \
649 pszOdinDebugChannel, \
650 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
651 CheckFS(sel) \
652 _heap_check(); \
653 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
654 _heap_check(); \
655 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
656 pszOdinDebugChannel, \
657 rc)); \
658 SetFS(sel); \
659 return rc; \
660 } \
661 \
662 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
663
664#define ODINPROCEDURE13(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
665 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
666 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
667 { \
668 unsigned short sel = RestoreOS2FS(); \
669 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
670 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
671 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
672 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, ) enter\n", \
673 pszOdinDebugChannel, \
674 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
675 CheckFS(sel) \
676 _heap_check(); \
677 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
678 _heap_check(); \
679 dprintf(("%s: void "#cName"() leave\n", \
680 pszOdinDebugChannel)); \
681 SetFS(sel); \
682 } \
683 \
684 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
685
686
687/* ---------- 14 parameters ---------- */
688#define ODINFUNCTION14(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
689 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
690 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
691 { \
692 unsigned short sel = RestoreOS2FS(); \
693 dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
694 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
695 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
696 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh) enter\n", \
697 pszOdinDebugChannel, \
698 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
699 CheckFS(sel) \
700 _heap_check(); \
701 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
702 _heap_check(); \
703 dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
704 pszOdinDebugChannel, \
705 rc)); \
706 SetFS(sel); \
707 return rc; \
708 } \
709 \
710 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
711
712#define ODINPROCEDURE14(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
[1953]713 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
[1696]714 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
715 { \
716 unsigned short sel = RestoreOS2FS(); \
717 dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
718 ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
719 ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
720 ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh) enter\n", \
721 pszOdinDebugChannel, \
722 a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
723 CheckFS(sel) \
724 _heap_check(); \
725 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
726 _heap_check(); \
727 dprintf(("%s: void "#cName"() leave\n", \
728 pszOdinDebugChannel)); \
729 SetFS(sel); \
730 } \
731 \
732 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
733
734
[475]735#else
736
737/****************************************************************************
[473]738 * General Wrapper Macros *
739 ****************************************************************************/
740
741/* ---------- 0 parameters ---------- */
742#define ODINFUNCTION0(cRet,cName) \
[484]743 cRet ODIN_INTERNAL ODIN_##cName (void);\
744 cRet WINAPI cName(void) \
[473]745 { \
746 unsigned short sel = RestoreOS2FS(); \
[491]747 cRet rc = ODIN_##cName(); \
[473]748 SetFS(sel); \
749 return rc; \
750 } \
751 \
[484]752 cRet ODIN_INTERNAL ODIN_##cName (void)
[473]753
754
755#define ODINPROCEDURE0(cName) \
[484]756 void ODIN_INTERNAL ODIN_##cName (void);\
757 void WINAPI cName(void) \
[473]758 { \
759 unsigned short sel = RestoreOS2FS(); \
[491]760 ODIN_##cName(); \
[473]761 SetFS(sel); \
762 } \
763 \
[484]764 void ODIN_INTERNAL ODIN_##cName (void)
[473]765
766
767/* ---------- 1 parameters ---------- */
768#define ODINFUNCTION1(cRet,cName,t1,a1) \
[484]769 cRet ODIN_INTERNAL ODIN_##cName (t1 a1);\
770 cRet WINAPI cName(t1 a1) \
[473]771 { \
772 unsigned short sel = RestoreOS2FS(); \
[491]773 cRet rc = ODIN_##cName(a1); \
[473]774 SetFS(sel); \
775 return rc; \
776 } \
777 \
[484]778 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
[473]779
780#define ODINPROCEDURE1(cName,t1,a1) \
[484]781 void ODIN_INTERNAL ODIN_##cName (t1 a1);\
782 void WINAPI cName(t1 a1) \
[473]783 { \
784 unsigned short sel = RestoreOS2FS(); \
[491]785 ODIN_##cName(a1); \
[473]786 SetFS(sel); \
787 } \
788 \
[484]789 void ODIN_INTERNAL ODIN_##cName (t1 a1)
[473]790
791
792/* ---------- 2 parameters ---------- */
793#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2) \
[484]794 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
795 cRet WINAPI cName(t1 a1,t2 a2) \
[473]796 { \
797 unsigned short sel = RestoreOS2FS(); \
[491]798 cRet rc = ODIN_##cName(a1,a2); \
[473]799 SetFS(sel); \
800 return rc; \
801 } \
802 \
[484]803 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[473]804
805#define ODINPROCEDURE2(cName,t1,a1,t2,a2) \
[484]806 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);\
807 void WINAPI cName(t1 a1,t2 a2) \
[473]808 { \
809 unsigned short sel = RestoreOS2FS(); \
[491]810 ODIN_##cName(a1,a2); \
[473]811 SetFS(sel); \
812 } \
813 \
[484]814 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
[473]815
816
817/* ---------- 3 parameters ---------- */
818#define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3) \
[484]819 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
820 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
[473]821 { \
822 unsigned short sel = RestoreOS2FS(); \
[491]823 cRet rc = ODIN_##cName(a1,a2,a3); \
[473]824 SetFS(sel); \
825 return rc; \
826 } \
827 \
[484]828 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[473]829
830#define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3) \
[484]831 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
832 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
[473]833 { \
834 unsigned short sel = RestoreOS2FS(); \
[491]835 ODIN_##cName(a1,a2,a3); \
[473]836 SetFS(sel); \
837 } \
838 \
[484]839 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
[473]840
841
842/* ---------- 4 parameters ---------- */
843#define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]844 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
845 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[473]846 { \
847 unsigned short sel = RestoreOS2FS(); \
[491]848 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
[473]849 SetFS(sel); \
850 return rc; \
851 } \
852 \
[484]853 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[473]854
855#define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
[484]856 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
857 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
[473]858 { \
859 unsigned short sel = RestoreOS2FS(); \
[491]860 ODIN_##cName(a1,a2,a3,a4); \
[473]861 SetFS(sel); \
862 } \
863 \
[484]864 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
[473]865
866
867/* ---------- 5 parameters ---------- */
868#define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]869 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
870 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[473]871 { \
872 unsigned short sel = RestoreOS2FS(); \
[491]873 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
[473]874 SetFS(sel); \
875 return rc; \
876 } \
877 \
[484]878 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[473]879
880#define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
[484]881 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
882 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
[473]883 { \
884 unsigned short sel = RestoreOS2FS(); \
[491]885 ODIN_##cName(a1,a2,a3,a4,a5); \
[473]886 SetFS(sel); \
887 } \
888 \
[484]889 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
[473]890
891
892/* ---------- 6 parameters ---------- */
893#define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]894 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
895 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[473]896 { \
897 unsigned short sel = RestoreOS2FS(); \
[491]898 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[473]899 SetFS(sel); \
900 return rc; \
901 } \
902 \
[484]903 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[473]904
905#define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
[484]906 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
907 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
[473]908 { \
909 unsigned short sel = RestoreOS2FS(); \
[491]910 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
[473]911 SetFS(sel); \
912 } \
913 \
[484]914 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
[473]915
916
917/* ---------- 7 parameters ---------- */
918#define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]919 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
920 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[473]921 { \
922 unsigned short sel = RestoreOS2FS(); \
[491]923 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[473]924 SetFS(sel); \
925 return rc; \
926 } \
927 \
[484]928 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[473]929
930#define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
[484]931 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
932 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
[473]933 { \
934 unsigned short sel = RestoreOS2FS(); \
[491]935 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
[473]936 SetFS(sel); \
937 } \
938 \
[484]939 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
[473]940
941
942/* ---------- 8 parameters ---------- */
943#define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]944 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
945 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[473]946 { \
947 unsigned short sel = RestoreOS2FS(); \
[491]948 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[473]949 SetFS(sel); \
950 return rc; \
951 } \
952 \
[595]953 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[473]954
955#define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
[484]956 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
957 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
[473]958 { \
959 unsigned short sel = RestoreOS2FS(); \
[491]960 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
[473]961 SetFS(sel); \
962 } \
963 \
[484]964 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
[473]965
966
[475]967/* ---------- 9 parameters ---------- */
968#define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]969 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
970 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]971 { \
972 unsigned short sel = RestoreOS2FS(); \
[491]973 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]974 SetFS(sel); \
975 return rc; \
976 } \
977 \
[595]978 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[473]979
[475]980#define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
[484]981 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
982 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
[475]983 { \
984 unsigned short sel = RestoreOS2FS(); \
[491]985 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
[475]986 SetFS(sel); \
987 } \
988 \
[484]989 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
[475]990
991
992/* ---------- 10 parameters ---------- */
993#define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]994 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
995 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]996 { \
997 unsigned short sel = RestoreOS2FS(); \
[491]998 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]999 SetFS(sel); \
1000 return rc; \
1001 } \
1002 \
[595]1003 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
[475]1004
1005#define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
[484]1006 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1007 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
[475]1008 { \
1009 unsigned short sel = RestoreOS2FS(); \
[491]1010 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
[475]1011 SetFS(sel); \
1012 } \
1013 \
[484]1014 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
[475]1015
1016
1017/* ---------- 11 parameters ---------- */
1018#define ODINFUNCTION11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
[484]1019 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1020 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
[475]1021 { \
1022 unsigned short sel = RestoreOS2FS(); \
[491]1023 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]1024 SetFS(sel); \
1025 return rc; \
1026 } \
1027 \
[595]1028 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
[475]1029
1030#define ODINPROCEDURE11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
[484]1031 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1032 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
[475]1033 { \
1034 unsigned short sel = RestoreOS2FS(); \
[491]1035 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
[475]1036 SetFS(sel); \
1037 } \
1038 \
[484]1039 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
[475]1040
1041
1042/* ---------- 12 parameters ---------- */
1043#define ODINFUNCTION12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
[484]1044 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1045 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
[475]1046 { \
1047 unsigned short sel = RestoreOS2FS(); \
[491]1048 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]1049 SetFS(sel); \
1050 return rc; \
1051 } \
1052 \
[595]1053 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
[475]1054
1055#define ODINPROCEDURE12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
[484]1056 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1057 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
[475]1058 { \
1059 unsigned short sel = RestoreOS2FS(); \
[491]1060 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
[475]1061 SetFS(sel); \
1062 } \
1063 \
[484]1064 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
[475]1065
1066
1067
1068#endif
1069
[1669]1070/****************************************************************************
1071 * General Wrapper Macros *
1072 ****************************************************************************/
1073
1074/* ---------- 0 parameters ---------- */
1075#define ODINFUNCTIONNODBG0(cRet,cName) \
1076 cRet ODIN_INTERNAL ODIN_##cName (void);\
1077 cRet WINAPI cName(void) \
1078 { \
1079 unsigned short sel = RestoreOS2FS(); \
1080 cRet rc = ODIN_##cName(); \
1081 SetFS(sel); \
1082 return rc; \
1083 } \
1084 \
1085 cRet ODIN_INTERNAL ODIN_##cName (void)
1086
1087
1088#define ODINPROCEDURENODBG0(cName) \
1089 void ODIN_INTERNAL ODIN_##cName (void);\
1090 void WINAPI cName(void) \
1091 { \
1092 unsigned short sel = RestoreOS2FS(); \
1093 ODIN_##cName(); \
1094 SetFS(sel); \
1095 } \
1096 \
1097 void ODIN_INTERNAL ODIN_##cName (void)
1098
1099
1100/* ---------- 1 parameters ---------- */
1101#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) \
1102 cRet ODIN_INTERNAL ODIN_##cName (t1 a1);\
1103 cRet WINAPI cName(t1 a1) \
1104 { \
1105 unsigned short sel = RestoreOS2FS(); \
1106 cRet rc = ODIN_##cName(a1); \
1107 SetFS(sel); \
1108 return rc; \
1109 } \
1110 \
1111 cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
1112
1113#define ODINPROCEDURENODBG1(cName,t1,a1) \
1114 void ODIN_INTERNAL ODIN_##cName (t1 a1);\
1115 void WINAPI cName(t1 a1) \
1116 { \
1117 unsigned short sel = RestoreOS2FS(); \
1118 ODIN_##cName(a1); \
1119 SetFS(sel); \
1120 } \
1121 \
1122 void ODIN_INTERNAL ODIN_##cName (t1 a1)
1123
1124
1125/* ---------- 2 parameters ---------- */
1126#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) \
1127 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
1128 cRet WINAPI cName(t1 a1,t2 a2) \
1129 { \
1130 unsigned short sel = RestoreOS2FS(); \
1131 cRet rc = ODIN_##cName(a1,a2); \
1132 SetFS(sel); \
1133 return rc; \
1134 } \
1135 \
1136 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
1137
1138#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2) \
1139 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);\
1140 void WINAPI cName(t1 a1,t2 a2) \
1141 { \
1142 unsigned short sel = RestoreOS2FS(); \
1143 ODIN_##cName(a1,a2); \
1144 SetFS(sel); \
1145 } \
1146 \
1147 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
1148
1149
1150/* ---------- 3 parameters ---------- */
1151#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3) \
1152 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
1153 cRet WINAPI cName(t1 a1,t2 a2,t3 a3) \
1154 { \
1155 unsigned short sel = RestoreOS2FS(); \
1156 cRet rc = ODIN_##cName(a1,a2,a3); \
1157 SetFS(sel); \
1158 return rc; \
1159 } \
1160 \
1161 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
1162
1163#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3) \
1164 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3); \
1165 void WINAPI cName(t1 a1,t2 a2,t3 a3) \
1166 { \
1167 unsigned short sel = RestoreOS2FS(); \
1168 ODIN_##cName(a1,a2,a3); \
1169 SetFS(sel); \
1170 } \
1171 \
1172 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
1173
1174
1175/* ---------- 4 parameters ---------- */
1176#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4) \
1177 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
1178 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
1179 { \
1180 unsigned short sel = RestoreOS2FS(); \
1181 cRet rc = ODIN_##cName(a1,a2,a3,a4); \
1182 SetFS(sel); \
1183 return rc; \
1184 } \
1185 \
1186 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
1187
1188#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4) \
1189 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4); \
1190 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4) \
1191 { \
1192 unsigned short sel = RestoreOS2FS(); \
1193 ODIN_##cName(a1,a2,a3,a4); \
1194 SetFS(sel); \
1195 } \
1196 \
1197 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
1198
1199
1200/* ---------- 5 parameters ---------- */
1201#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
1202 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
1203 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
1204 { \
1205 unsigned short sel = RestoreOS2FS(); \
1206 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5); \
1207 SetFS(sel); \
1208 return rc; \
1209 } \
1210 \
1211 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
1212
1213#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \
1214 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5); \
1215 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5) \
1216 { \
1217 unsigned short sel = RestoreOS2FS(); \
1218 ODIN_##cName(a1,a2,a3,a4,a5); \
1219 SetFS(sel); \
1220 } \
1221 \
1222 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
1223
1224
1225/* ---------- 6 parameters ---------- */
1226#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
1227 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
1228 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
1229 { \
1230 unsigned short sel = RestoreOS2FS(); \
1231 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
1232 SetFS(sel); \
1233 return rc; \
1234 } \
1235 \
1236 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1237
1238#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) \
1239 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6); \
1240 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6) \
1241 { \
1242 unsigned short sel = RestoreOS2FS(); \
1243 ODIN_##cName(a1,a2,a3,a4,a5,a6); \
1244 SetFS(sel); \
1245 } \
1246 \
1247 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
1248
1249
1250/* ---------- 7 parameters ---------- */
1251#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1252 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1253 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1254 { \
1255 unsigned short sel = RestoreOS2FS(); \
1256 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
1257 SetFS(sel); \
1258 return rc; \
1259 } \
1260 \
1261 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1262
1263#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \
1264 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7); \
1265 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7) \
1266 { \
1267 unsigned short sel = RestoreOS2FS(); \
1268 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
1269 SetFS(sel); \
1270 } \
1271 \
1272 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
1273
1274
1275/* ---------- 8 parameters ---------- */
1276#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1277 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1278 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1279 { \
1280 unsigned short sel = RestoreOS2FS(); \
1281 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
1282 SetFS(sel); \
1283 return rc; \
1284 } \
1285 \
1286 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1287
1288#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) \
1289 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8); \
1290 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8) \
1291 { \
1292 unsigned short sel = RestoreOS2FS(); \
1293 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
1294 SetFS(sel); \
1295 } \
1296 \
1297 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
1298
1299
1300/* ---------- 9 parameters ---------- */
1301#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1302 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1303 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1304 { \
1305 unsigned short sel = RestoreOS2FS(); \
1306 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
1307 SetFS(sel); \
1308 return rc; \
1309 } \
1310 \
1311 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1312
1313#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) \
1314 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9); \
1315 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9) \
1316 { \
1317 unsigned short sel = RestoreOS2FS(); \
1318 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
1319 SetFS(sel); \
1320 } \
1321 \
1322 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
1323
1324
1325/* ---------- 10 parameters ---------- */
1326#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1327 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1328 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1329 { \
1330 unsigned short sel = RestoreOS2FS(); \
1331 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1332 SetFS(sel); \
1333 return rc; \
1334 } \
1335 \
1336 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1337
1338#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) \
1339 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10); \
1340 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10) \
1341 { \
1342 unsigned short sel = RestoreOS2FS(); \
1343 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
1344 SetFS(sel); \
1345 } \
1346 \
1347 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
1348
1349
1350/* ---------- 11 parameters ---------- */
1351#define ODINFUNCTIONNODBG11(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1352 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1353 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
1354 { \
1355 unsigned short sel = RestoreOS2FS(); \
1356 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1357 SetFS(sel); \
1358 return rc; \
1359 } \
1360 \
1361 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
1362
1363#define ODINPROCEDURENODBG11(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) \
1364 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11); \
1365 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11) \
1366 { \
1367 unsigned short sel = RestoreOS2FS(); \
1368 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
1369 SetFS(sel); \
1370 } \
1371 \
1372 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11)
1373
1374
1375/* ---------- 12 parameters ---------- */
1376#define ODINFUNCTIONNODBG12(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
1377 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1378 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
1379 { \
1380 unsigned short sel = RestoreOS2FS(); \
1381 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1382 SetFS(sel); \
1383 return rc; \
1384 } \
1385 \
1386 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
1387
1388#define ODINPROCEDURENODBG12(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) \
1389 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12); \
1390 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12) \
1391 { \
1392 unsigned short sel = RestoreOS2FS(); \
1393 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
1394 SetFS(sel); \
1395 } \
1396 \
1397 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12)
1398
1399
[1696]1400/* ---------- 13 parameters ---------- */
1401#define ODINFUNCTIONNODBG13(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
1402 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
1403 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
1404 { \
1405 unsigned short sel = RestoreOS2FS(); \
1406 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1407 SetFS(sel); \
1408 return rc; \
1409 } \
1410 \
1411 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
[1669]1412
[1696]1413#define ODINPROCEDURENODBG13(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) \
1414 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13); \
1415 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13) \
1416 { \
1417 unsigned short sel = RestoreOS2FS(); \
1418 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
1419 SetFS(sel); \
1420 } \
1421 \
1422 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13)
[1669]1423
[1696]1424
1425/* ---------- 14 parameters ---------- */
1426#define ODINFUNCTIONNODBG14(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
1427 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
1428 cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
1429 { \
1430 unsigned short sel = RestoreOS2FS(); \
1431 cRet rc = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1432 SetFS(sel); \
1433 return rc; \
1434 } \
1435 \
1436 cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
1437
1438#define ODINPROCEDURENODBG14(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) \
1439 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14); \
1440 void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14) \
1441 { \
1442 unsigned short sel = RestoreOS2FS(); \
1443 ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
1444 SetFS(sel); \
1445 } \
1446 \
1447 void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14)
1448
1449
[473]1450#endif /* _ODINWRAP_H_ */
Note: See TracBrowser for help on using the repository browser.