Ignore:
Timestamp:
Oct 2, 2000, 5:52:06 PM (25 years ago)
Author:
phaller
Message:

Removed FS: wrappers from wrapper macros (for SvL)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/odinwrap.h

    r4124 r4377  
    1 /* $Id: odinwrap.h,v 1.23 2000-08-30 13:56:37 sandervl Exp $ */
     1/* $Id: odinwrap.h,v 1.24 2000-10-02 15:52:06 phaller Exp $ */
    22
    33/*
     
    4545#define ODIN_EXTERN(a)  ODIN_INTERNAL ODIN_##a
    4646
     47
     48
     49
    4750#ifdef DEBUG
    4851
     
    5053#include <malloc.h>
    5154
    52 #if 1
    53 #define CheckFS(a)
    54 #else
     55
     56// ---------------------------------------------------------------------------
    5557//SvL: Eases locating apis that corrupt FS
    56 #define error_FSSelector "FS Selector for thread %d corrupted!!!"
     58#define error_FSSelector "!!! ERROR - FS Selector for thread %d corrupted by this function call !!!"
    5759
    5860extern int IsExeStarted(); //kernel32
    5961
    60 #define CheckFS(sel) if(sel == 0x150b && IsExeStarted()) {          \
    61                           dprintf(((char *)error_FSSelector, GetCurrentThreadId()));    \
    62                      }
    63 #endif
    64 
     62#define FS_check()                       \
     63  { USHORT sel = GetFS();                \
     64    if(sel == 0x150b && IsExeStarted())  \
     65      dprintf(((char *)error_FSSelector, GetCurrentThreadId()));    \
     66  }
     67
     68
     69// ---------------------------------------------------------------------------
    6570//SvL: Only check the heap very frequently when there are problems
    6671//#define DEBUG_ODINHEAP
    67 
    6872#ifdef DEBUG_ODINHEAP
    6973#define ODIN_HEAPCHECK() _heap_check()
     
    7276#endif
    7377
     78
     79// ---------------------------------------------------------------------------
    7480// PH: this is for profiling cumulative method call times
    7581#ifdef PROFILE_ODIN
     
    98104#endif
    99105
     106
     107#define FNPROLOGUE(a)   \
     108  ODIN_HEAPCHECK();     \
     109  PROFILE_START(a)
     110
     111#define FNEPILOGUE(a)   \
     112  PROFILE_STOP(a)       \
     113  FS_check();           \
     114  ODIN_HEAPCHECK();     \
     115 
     116 
    100117/****************************************************************************
    101118 * General Wrapper Macros (debug instrumented)                              *
     
    107124  cRet WINAPI cName(void)                     \
    108125  {                                           \
    109     unsigned short sel = RestoreOS2FS();      \
    110     dprintf(("%s: "#cRet" "#cName"() enter\n",\
    111              pszOdinDebugChannel));           \
    112     CheckFS(sel)                              \
    113     ODIN_HEAPCHECK();                         \
    114     PROFILE_START(#cName)                     \
     126    dprintfNoEOL(("%s: "#cRet" "#cName"()",   \
     127             pszOdinDebugChannel));           \
     128    FNPROLOGUE(#cName)                        \
    115129    cRet   rc  = ODIN_##cName();              \
    116     PROFILE_STOP(#cName)                      \
    117     ODIN_HEAPCHECK();                         \
    118     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    119              pszOdinDebugChannel,             \
    120              rc));                            \
    121     SetFS(sel);                               \
     130    FNEPILOGUE(#cName)                        \
     131    dprintf(("- rc = %08xh\n", rc));          \
    122132    return rc;                                \
    123133  }                                           \
     
    130140  void WINAPI cName(void)                     \
    131141  {                                           \
    132     unsigned short sel = RestoreOS2FS();      \
    133     dprintf(("%s: void "#cName"() enter\n",   \
    134              pszOdinDebugChannel));           \
    135     CheckFS(sel)                              \
    136     ODIN_HEAPCHECK();                         \
    137     PROFILE_START(#cName)                     \
     142    dprintfNoEOL(("%s: void "#cName"()",   \
     143             pszOdinDebugChannel));           \
     144    FNPROLOGUE(#cName)                       \
    138145    ODIN_##cName();                           \
    139     PROFILE_STOP(#cName)                      \
    140     ODIN_HEAPCHECK();                         \
    141146    dprintf(("%s: void "#cName"() leave\n",   \
    142147             pszOdinDebugChannel));           \
    143     SetFS(sel);                               \
     148    FNEPILOGUE(#cName)                        \
    144149  }                                           \
    145150                                              \
     
    152157  cRet WINAPI cName(t1 a1)                    \
    153158  {                                           \
    154     unsigned short sel = RestoreOS2FS();      \
    155     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh) enter\n", \
     159    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh)", \
    156160             pszOdinDebugChannel,             \
    157161             a1));                            \
    158     CheckFS(sel)                              \
    159     ODIN_HEAPCHECK();                         \
    160     PROFILE_START(#cName)                     \
     162    FNPROLOGUE(#cName)                       \
    161163    cRet   rc  = ODIN_##cName(a1);            \
    162     PROFILE_STOP(#cName)                      \
    163     ODIN_HEAPCHECK();                         \
    164     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    165              pszOdinDebugChannel,             \
    166              rc));                            \
    167     SetFS(sel);                               \
     164    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     165             pszOdinDebugChannel,             \
     166             rc));                            \
     167    FNEPILOGUE(#cName)                        \
    168168    return rc;                                \
    169169  }                                           \
     
    175175  void WINAPI cName(t1 a1)                    \
    176176  {                                           \
    177     unsigned short sel = RestoreOS2FS();      \
    178     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh) enter\n", \
     177    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh)", \
    179178             pszOdinDebugChannel,             \
    180179             a1));                            \
    181     CheckFS(sel)                              \
    182     ODIN_HEAPCHECK();                         \
    183     PROFILE_START(#cName)                     \
     180    FNPROLOGUE(#cName)                       \
    184181    ODIN_##cName(a1);                         \
    185     PROFILE_STOP(#cName)                      \
    186     ODIN_HEAPCHECK();                         \
    187182    dprintf(("%s: void "#cName"() leave\n",   \
    188183             pszOdinDebugChannel));           \
    189     SetFS(sel);                               \
     184    FNEPILOGUE(#cName)                        \
    190185  }                                           \
    191186                                              \
     
    198193  cRet WINAPI cName(t1 a1,t2 a2)               \
    199194  {                                            \
    200     unsigned short sel = RestoreOS2FS();       \
    201     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
     195    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
    202196             pszOdinDebugChannel,              \
    203197             a1,a2));                          \
    204     CheckFS(sel)                               \
    205     ODIN_HEAPCHECK();                          \
    206     PROFILE_START(#cName)                      \
     198    FNPROLOGUE(#cName)                        \
    207199    cRet   rc  = ODIN_##cName(a1,a2);          \
    208     PROFILE_STOP(#cName)                       \
    209     ODIN_HEAPCHECK();                          \
    210200    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    211201             pszOdinDebugChannel,              \
    212202             rc));                             \
    213     SetFS(sel);                                \
     203    FNEPILOGUE(#cName)                         \
    214204    return rc;                                 \
    215205  }                                            \
     
    221211  void WINAPI cName(t1 a1,t2 a2)              \
    222212  {                                           \
    223     unsigned short sel = RestoreOS2FS();      \
    224     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
     213    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh)", \
    225214             pszOdinDebugChannel,             \
    226215             a1,a2));                         \
    227     CheckFS(sel)                              \
    228     ODIN_HEAPCHECK();                         \
    229     PROFILE_START(#cName)                     \
     216    FNPROLOGUE(#cName)                       \
    230217    ODIN_##cName(a1,a2);                      \
    231     PROFILE_STOP(#cName)                      \
    232     ODIN_HEAPCHECK();                         \
    233218    dprintf(("%s: void "#cName"() leave\n",   \
    234219             pszOdinDebugChannel));           \
    235     SetFS(sel);                               \
     220    FNEPILOGUE(#cName)                        \
    236221  }                                           \
    237222                                              \
     
    244229  cRet WINAPI cName(t1 a1,t2 a2,t3 a3)        \
    245230  {                                           \
    246     unsigned short sel = RestoreOS2FS();      \
    247     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
     231    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
    248232             pszOdinDebugChannel,             \
    249233             a1,a2,a3));                      \
    250     CheckFS(sel)                              \
    251     ODIN_HEAPCHECK();                         \
    252     PROFILE_START(#cName)                     \
     234    FNPROLOGUE(#cName)                       \
    253235    cRet   rc  = ODIN_##cName(a1,a2,a3);      \
    254     PROFILE_STOP(#cName)                      \
    255     ODIN_HEAPCHECK();                         \
    256     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    257              pszOdinDebugChannel,             \
    258              rc));                            \
    259     SetFS(sel);                   \
     236    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     237             pszOdinDebugChannel,             \
     238             rc));                            \
     239    FNEPILOGUE(#cName)            \
    260240    return rc;                    \
    261241  }                               \
     
    267247  void WINAPI cName(t1 a1,t2 a2,t3 a3)    \
    268248  {                               \
    269     unsigned short sel = RestoreOS2FS();  \
    270     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
     249    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)", \
    271250             pszOdinDebugChannel,             \
    272251             a1,a2,a3));                      \
    273     CheckFS(sel)                              \
    274     ODIN_HEAPCHECK();                            \
    275     PROFILE_START(#cName)                      \
     252    FNPROLOGUE(#cName)                       \
    276253    ODIN_##cName(a1,a2,a3);              \
    277     PROFILE_STOP(#cName)                      \
    278     ODIN_HEAPCHECK();                            \
    279     dprintf(("%s: void "#cName"() leave\n",    \
    280              pszOdinDebugChannel));           \
    281     SetFS(sel);                   \
     254             pszOdinDebugChannel));           \
     255    FNEPILOGUE(#cName)            \
    282256  }                               \
    283257                                  \
     
    290264  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)        \
    291265  {                               \
    292     unsigned short sel = RestoreOS2FS();  \
    293     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
     266    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
    294267             pszOdinDebugChannel,             \
    295268             a1,a2,a3,a4));                   \
    296     CheckFS(sel)                              \
    297     ODIN_HEAPCHECK();                            \
    298     PROFILE_START(#cName)                      \
     269    FNPROLOGUE(#cName)                       \
    299270    cRet   rc  = ODIN_##cName(a1,a2,a3,a4); \
    300     PROFILE_STOP(#cName)                      \
    301     ODIN_HEAPCHECK();                            \
    302     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    303              pszOdinDebugChannel,             \
    304              rc));                            \
    305     SetFS(sel);                   \
     271    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     272             pszOdinDebugChannel,             \
     273             rc));                            \
     274    FNEPILOGUE(#cName)            \
    306275    return rc;                    \
    307276  }                               \
     
    313282  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)    \
    314283  {                               \
    315     unsigned short sel = RestoreOS2FS();  \
    316     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh) enter\n", \
     284    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh, "#t4" "#a4"=%08xh)", \
    317285             pszOdinDebugChannel,             \
    318286             a1,a2,a3,a4));                    \
    319     CheckFS(sel)                              \
    320     ODIN_HEAPCHECK();                            \
    321     PROFILE_START(#cName)                      \
     287    FNPROLOGUE(#cName)                       \
    322288    ODIN_##cName(a1,a2,a3,a4); \
    323     PROFILE_STOP(#cName)                      \
    324     ODIN_HEAPCHECK();                            \
    325     dprintf(("%s: void "#cName"() leave\n",    \
    326              pszOdinDebugChannel));           \
    327     SetFS(sel);      \
     289    dprintf(("%s: void "#cName"() leave\n",    \
     290             pszOdinDebugChannel));           \
     291    FNEPILOGUE       \
    328292  }                               \
    329293                                  \
     
    336300  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)        \
    337301  {                               \
    338     unsigned short sel = RestoreOS2FS();  \
    339     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
    340              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
     302    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh" \
     303             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
    341304             pszOdinDebugChannel,             \
    342305             a1,a2,a3,a4,a5));                \
    343     CheckFS(sel)                              \
    344     ODIN_HEAPCHECK();                            \
    345     PROFILE_START(#cName)                      \
     306    FNPROLOGUE(#cName)                       \
    346307    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5); \
    347     PROFILE_STOP(#cName)                      \
    348     ODIN_HEAPCHECK();                            \
    349     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    350              pszOdinDebugChannel,             \
    351              rc));                            \
    352     SetFS(sel);                   \
     308    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     309             pszOdinDebugChannel,             \
     310             rc));                            \
     311    FNEPILOGUE(#cName)            \
    353312    return rc;                    \
    354313  }                               \
     
    360319  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)    \
    361320  {                               \
    362     unsigned short sel = RestoreOS2FS();  \
    363     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    364              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh) enter\n", \
     321    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     322             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh)", \
    365323             pszOdinDebugChannel,             \
    366324             a1,a2,a3,a4,a5));                \
    367     CheckFS(sel)                              \
    368     ODIN_HEAPCHECK();                            \
    369     PROFILE_START(#cName)                      \
     325    FNPROLOGUE(#cName)                       \
    370326    ODIN_##cName(a1,a2,a3,a4,a5); \
    371     PROFILE_STOP(#cName)                      \
    372     ODIN_HEAPCHECK();                            \
    373     dprintf(("%s: void "#cName"() leave\n",    \
    374              pszOdinDebugChannel));           \
    375     SetFS(sel);      \
     327             pszOdinDebugChannel));           \
     328    FNEPILOGUE       \
    376329  }                               \
    377330                                  \
     
    384337  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)        \
    385338  {                               \
    386     unsigned short sel = RestoreOS2FS();  \
    387     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    388              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
     339    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     340             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
    389341             pszOdinDebugChannel,             \
    390342             a1,a2,a3,a4,a5,a6));             \
    391     CheckFS(sel)                              \
    392     ODIN_HEAPCHECK();                            \
    393     PROFILE_START(#cName)                      \
     343    FNPROLOGUE(#cName)                       \
    394344    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
    395     PROFILE_STOP(#cName)                      \
    396     ODIN_HEAPCHECK();                            \
    397     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    398              pszOdinDebugChannel,             \
    399              rc));                            \
    400     SetFS(sel);                   \
     345    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     346             pszOdinDebugChannel,             \
     347             rc));                            \
     348    FNEPILOGUE(#cName)            \
    401349    return rc;                    \
    402350  }                               \
     
    410358  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)        \
    411359  {                               \
    412     unsigned short sel = RestoreOS2FS();  \
    413     dprintf(("%s: "#cRet" "#cName"(selFS=%04xh, "#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    414              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
     360    dprintfNoEOL(("%s: "#cRet" "#cName"(selFS=%04xh, "#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     361             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
    415362             pszOdinDebugChannel,             \
    416363             sel,                             \
    417364             a1,a2,a3,a4,a5,a6));             \
    418     CheckFS(sel)                              \
    419     ODIN_HEAPCHECK();                            \
    420     PROFILE_START(#cName)                      \
     365    FNPROLOGUE(#cName)                       \
    421366    cRet   rc  = ODIN_##cName(sel,a1,a2,a3,a4,a5,a6); \
    422     PROFILE_STOP(#cName)                      \
    423     ODIN_HEAPCHECK();                            \
    424     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    425              pszOdinDebugChannel,             \
    426              rc));                            \
    427     SetFS(sel);                   \
     367    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     368             pszOdinDebugChannel,             \
     369             rc));                            \
     370    FNEPILOGUE(#cName)            \
    428371    return rc;                    \
    429372  }                               \
     
    436379  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)    \
    437380  {                               \
    438     unsigned short sel = RestoreOS2FS();  \
    439     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    440              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh) enter\n", \
     381    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     382             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh)", \
    441383             pszOdinDebugChannel,             \
    442384             a1,a2,a3,a4,a5,a6));             \
    443     CheckFS(sel)                              \
    444     ODIN_HEAPCHECK();                            \
    445     PROFILE_START(#cName)                      \
     385    FNPROLOGUE(#cName)                       \
    446386    ODIN_##cName(a1,a2,a3,a4,a5,a6); \
    447     PROFILE_STOP(#cName)                      \
    448     ODIN_HEAPCHECK();                            \
    449     dprintf(("%s: void "#cName"() leave\n",    \
    450              pszOdinDebugChannel));           \
    451     SetFS(sel);      \
     387    dprintf(("%s: void "#cName"() leave\n",    \
     388             pszOdinDebugChannel));           \
     389    FNEPILOGUE       \
    452390  }                               \
    453391                                  \
     
    460398  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)        \
    461399  {                               \
    462     unsigned short sel = RestoreOS2FS();  \
    463     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    464              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
     400    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     401             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
    465402             pszOdinDebugChannel,             \
    466403             a1,a2,a3,a4,a5,a6,a7));          \
    467     CheckFS(sel)                              \
    468     ODIN_HEAPCHECK();                            \
    469     PROFILE_START(#cName)                      \
     404    FNPROLOGUE(#cName)                       \
    470405    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
    471     PROFILE_STOP(#cName)                      \
    472     ODIN_HEAPCHECK();                            \
    473     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    474              pszOdinDebugChannel,             \
    475              rc));                            \
    476     SetFS(sel);                   \
     406    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     407             pszOdinDebugChannel,             \
     408             rc));                            \
     409    FNEPILOGUE(#cName)            \
    477410    return rc;                    \
    478411  }                               \
     
    484417  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)    \
    485418  {                               \
    486     unsigned short sel = RestoreOS2FS();  \
    487     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    488              ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh) enter\n", \
     419    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     420             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh)", \
    489421             pszOdinDebugChannel,             \
    490422             a1,a2,a3,a4,a5,a6,a7));          \
    491     CheckFS(sel)                              \
    492     ODIN_HEAPCHECK();                            \
    493     PROFILE_START(#cName)                      \
     423    FNPROLOGUE(#cName)                       \
    494424    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
    495     PROFILE_STOP(#cName)                      \
    496     ODIN_HEAPCHECK();                            \
    497     dprintf(("%s: void "#cName"() leave\n",    \
    498              pszOdinDebugChannel));           \
    499     SetFS(sel);      \
     425    dprintf(("%s: void "#cName"() leave\n",    \
     426             pszOdinDebugChannel));           \
     427    FNEPILOGUE       \
    500428  }                               \
    501429                                  \
     
    508436  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)        \
    509437  {                               \
    510     unsigned short sel = RestoreOS2FS();  \
    511     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     438    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    512439             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
    513              ", "#t8" "#a8"=%08xh) enter\n", \
     440             ", "#t8" "#a8"=%08xh)", \
    514441             pszOdinDebugChannel,             \
    515442             a1,a2,a3,a4,a5,a6,a7,a8));       \
    516     CheckFS(sel)                              \
    517     ODIN_HEAPCHECK();                            \
    518     PROFILE_START(#cName)                      \
     443    FNPROLOGUE(#cName)                       \
    519444    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
    520     PROFILE_STOP(#cName)                      \
    521     ODIN_HEAPCHECK();                            \
    522     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    523              pszOdinDebugChannel,             \
    524              rc));                            \
    525     SetFS(sel);                   \
     445    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     446             pszOdinDebugChannel,             \
     447             rc));                            \
     448    FNEPILOGUE(#cName)            \
    526449    return rc;                    \
    527450  }                               \
     
    533456  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)    \
    534457  {                               \
    535     unsigned short sel = RestoreOS2FS();  \
    536     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     458    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    537459             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
    538              ", "#t8" "#a8"=%08xh) enter\n", \
     460             ", "#t8" "#a8"=%08xh)", \
    539461             pszOdinDebugChannel,             \
    540462             a1,a2,a3,a4,a5,a6,a7,a8));       \
    541     ODIN_HEAPCHECK();                            \
    542     CheckFS(sel)                              \
    543     PROFILE_START(#cName)                      \
     463    FNPROLOGUE(#cName)                       \
    544464    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
    545     PROFILE_STOP(#cName)                      \
    546     ODIN_HEAPCHECK();                            \
    547     dprintf(("%s: void "#cName"() leave\n",    \
    548              pszOdinDebugChannel));           \
    549     SetFS(sel);      \
     465    dprintf(("%s: void "#cName"() leave\n",    \
     466             pszOdinDebugChannel));           \
     467    FNEPILOGUE       \
    550468  }                               \
    551469                                  \
     
    558476  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)        \
    559477  {                               \
    560     unsigned short sel = RestoreOS2FS();  \
    561     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     478    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    562479             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
    563              ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh) enter\n", \
     480             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
    564481             pszOdinDebugChannel,             \
    565482             a1,a2,a3,a4,a5,a6,a7,a8,a9));    \
    566     CheckFS(sel)                              \
    567     ODIN_HEAPCHECK();                            \
    568     PROFILE_START(#cName)                      \
     483    FNPROLOGUE(#cName)                       \
    569484    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
    570     PROFILE_STOP(#cName)                      \
    571     ODIN_HEAPCHECK();                            \
    572     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    573              pszOdinDebugChannel,             \
    574              rc));                            \
    575     SetFS(sel);                   \
     485    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     486             pszOdinDebugChannel,             \
     487             rc));                            \
     488    FNEPILOGUE(#cName)            \
    576489    return rc;                    \
    577490  }                               \
     
    583496  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)    \
    584497  {                               \
    585     unsigned short sel = RestoreOS2FS();  \
    586     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     498    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    587499             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
    588              ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh) enter\n", \
     500             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh)", \
    589501             pszOdinDebugChannel,             \
    590502             a1,a2,a3,a4,a5,a6,a7,a8,a9));    \
    591     CheckFS(sel)                              \
    592     ODIN_HEAPCHECK();                            \
    593     PROFILE_START(#cName)                      \
     503    FNPROLOGUE(#cName)                       \
    594504    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
    595     PROFILE_STOP(#cName)                      \
    596     ODIN_HEAPCHECK();                            \
    597     dprintf(("%s: void "#cName"() leave\n",    \
    598              pszOdinDebugChannel));           \
    599     SetFS(sel);      \
     505    dprintf(("%s: void "#cName"() leave\n",    \
     506             pszOdinDebugChannel));           \
     507    FNEPILOGUE       \
    600508  }                               \
    601509                                  \
     
    608516  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)        \
    609517  {                               \
    610     unsigned short sel = RestoreOS2FS();  \
    611     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     518    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    612519             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
    613              ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh) enter\n", \
     520             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
    614521             pszOdinDebugChannel,             \
    615522             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10));\
    616     CheckFS(sel)                              \
    617     ODIN_HEAPCHECK();                            \
    618     PROFILE_START(#cName)                      \
     523    FNPROLOGUE(#cName)                       \
    619524    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
    620     PROFILE_STOP(#cName)                      \
    621     ODIN_HEAPCHECK();                            \
    622     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    623              pszOdinDebugChannel,             \
    624              rc));                            \
    625     SetFS(sel);                   \
     525    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     526             pszOdinDebugChannel,             \
     527             rc));                            \
     528    FNEPILOGUE(#cName)            \
    626529    return rc;                    \
    627530  }                               \
     
    633536  void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)    \
    634537  {                               \
    635     unsigned short sel = RestoreOS2FS();  \
    636     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     538    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    637539             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh" \
    638              ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh) enter\n", \
     540             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh)", \
    639541             pszOdinDebugChannel,             \
    640542             a1,a2,a3));                      \
    641     CheckFS(sel)                              \
    642     ODIN_HEAPCHECK();                            \
    643     PROFILE_START(#cName)                      \
     543    FNPROLOGUE(#cName)                       \
    644544    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
    645     PROFILE_STOP(#cName)                      \
    646     ODIN_HEAPCHECK();                            \
    647     dprintf(("%s: void "#cName"() leave\n",    \
    648              pszOdinDebugChannel));           \
    649     SetFS(sel);      \
     545    dprintf(("%s: void "#cName"() leave\n",    \
     546             pszOdinDebugChannel));           \
     547    FNEPILOGUE       \
    650548  }                               \
    651549                                  \
     
    658556  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)        \
    659557  {                               \
    660     unsigned short sel = RestoreOS2FS();  \
    661     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     558    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    662559             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"  \
    663              ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh) enter\n", \
     560             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
    664561             pszOdinDebugChannel,             \
    665562             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
    666     CheckFS(sel)                              \
    667     ODIN_HEAPCHECK();                            \
    668     PROFILE_START(#cName)                      \
     563    FNPROLOGUE(#cName)                       \
    669564    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
    670     PROFILE_STOP(#cName)                      \
    671     ODIN_HEAPCHECK();                            \
    672     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    673              pszOdinDebugChannel,             \
    674              rc));                            \
    675     SetFS(sel);                   \
     565    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     566             pszOdinDebugChannel,             \
     567             rc));                            \
     568    FNEPILOGUE(#cName)            \
    676569    return rc;                    \
    677570  }                               \
     
    683576  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)    \
    684577  {                               \
    685     unsigned short sel = RestoreOS2FS();  \
    686     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     578    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    687579             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"  \
    688              ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh) enter\n", \
     580             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh)", \
    689581             pszOdinDebugChannel,             \
    690582             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)); \
    691     CheckFS(sel)                              \
    692     ODIN_HEAPCHECK();                            \
    693     PROFILE_START(#cName)                      \
     583    FNPROLOGUE(#cName)                       \
    694584    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
    695     PROFILE_STOP(#cName)                      \
    696     ODIN_HEAPCHECK();                            \
    697     dprintf(("%s: void "#cName"() leave\n",    \
    698              pszOdinDebugChannel));           \
    699     SetFS(sel);      \
     585    dprintf(("%s: void "#cName"() leave\n",    \
     586             pszOdinDebugChannel));           \
     587    FNEPILOGUE       \
    700588  }                               \
    701589                                  \
     
    708596  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)        \
    709597  {                               \
    710     unsigned short sel = RestoreOS2FS();  \
    711     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     598    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    712599             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"     \
    713600             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
    714              ", "#t12" "#a12"=%08xh) enter\n", \
     601             ", "#t12" "#a12"=%08xh)", \
    715602             pszOdinDebugChannel,             \
    716603             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)); \
    717     CheckFS(sel)                              \
    718     ODIN_HEAPCHECK();                            \
    719     PROFILE_START(#cName)                      \
     604    FNPROLOGUE(#cName)                       \
    720605    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
    721     PROFILE_STOP(#cName)                      \
    722     ODIN_HEAPCHECK();                            \
    723     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    724              pszOdinDebugChannel,             \
    725              rc));                            \
    726     SetFS(sel);                   \
     606    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     607             pszOdinDebugChannel,             \
     608             rc));                            \
     609    FNEPILOGUE(#cName)            \
    727610    return rc;                    \
    728611  }                               \
     
    734617  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)    \
    735618  {                               \
    736     unsigned short sel = RestoreOS2FS();  \
    737     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     619    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    738620             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"     \
    739621             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
    740              ", "#t12" "#a12"=%08xh) enter\n", \
     622             ", "#t12" "#a12"=%08xh)", \
    741623             pszOdinDebugChannel,             \
    742624             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12));  \
    743     CheckFS(sel)                              \
    744     ODIN_HEAPCHECK();                            \
    745     PROFILE_START(#cName)                      \
     625    FNPROLOGUE(#cName)                       \
    746626    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
    747     PROFILE_STOP(#cName)                      \
    748     ODIN_HEAPCHECK();                            \
    749     dprintf(("%s: void "#cName"() leave\n",    \
    750              pszOdinDebugChannel));           \
    751     SetFS(sel);      \
     627    dprintf(("%s: void "#cName"() leave\n",    \
     628             pszOdinDebugChannel));           \
     629    FNEPILOGUE       \
    752630  }                               \
    753631                                  \
     
    760638  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)        \
    761639  {                               \
    762     unsigned short sel = RestoreOS2FS();  \
    763     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     640    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    764641             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"     \
    765642             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
    766              ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh) enter\n", \
     643             ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh)", \
    767644             pszOdinDebugChannel,             \
    768645             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)); \
    769     CheckFS(sel)                              \
    770     ODIN_HEAPCHECK();                            \
    771     PROFILE_START(#cName)                      \
     646    FNPROLOGUE(#cName)                       \
    772647    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
    773     PROFILE_STOP(#cName)                      \
    774     ODIN_HEAPCHECK();                            \
    775     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    776              pszOdinDebugChannel,             \
    777              rc));                            \
    778     SetFS(sel);                   \
     648    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     649             pszOdinDebugChannel,             \
     650             rc));                            \
     651    FNEPILOGUE(#cName)            \
    779652    return rc;                    \
    780653  }                               \
     
    786659  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)    \
    787660  {                               \
    788     unsigned short sel = RestoreOS2FS();  \
    789     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     661    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    790662             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"     \
    791663             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
    792              ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, ) enter\n", \
     664             ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, )", \
    793665             pszOdinDebugChannel,             \
    794666             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13));  \
    795     CheckFS(sel)                              \
    796     ODIN_HEAPCHECK();                            \
    797     PROFILE_START(#cName)                      \
     667    FNPROLOGUE(#cName)                       \
    798668    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
    799     PROFILE_STOP(#cName)                      \
    800     ODIN_HEAPCHECK();                            \
    801     dprintf(("%s: void "#cName"() leave\n",    \
    802              pszOdinDebugChannel));           \
    803     SetFS(sel);      \
     669    dprintf(("%s: void "#cName"() leave\n",    \
     670             pszOdinDebugChannel));           \
     671    FNEPILOGUE       \
    804672  }                               \
    805673                                  \
     
    812680  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)        \
    813681  {                               \
    814     unsigned short sel = RestoreOS2FS();  \
    815     dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     682    dprintfNoEOL(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    816683             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"     \
    817684             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
    818              ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh) enter\n", \
     685             ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
    819686             pszOdinDebugChannel,             \
    820687             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)); \
    821     CheckFS(sel)                              \
    822     ODIN_HEAPCHECK();                            \
    823     PROFILE_START(#cName)                      \
     688    FNPROLOGUE(#cName)                       \
    824689    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
    825     ODIN_HEAPCHECK();                            \
    826     dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    827              pszOdinDebugChannel,             \
    828              rc));                            \
    829     SetFS(sel);                   \
     690    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     691             pszOdinDebugChannel,             \
     692             rc));                            \
     693    FNEPILOGUE(#cName)            \
    830694    return rc;                    \
    831695  }                               \
     
    837701  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)    \
    838702  {                               \
    839     unsigned short sel = RestoreOS2FS();  \
    840     dprintf(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
     703    dprintfNoEOL(("%s: void "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh)" \
    841704             ", "#t4" "#a4"=%08xh, "#t5" "#a5"=%08xh, "#t6" "#a6"=%08xh, "#t7" "#a7"=%08xh"     \
    842705             ", "#t8" "#a8"=%08xh, "#t9" "#a9"=%08xh, "#t10" "#a10"=%08xh, "#t11" "#a11"=%08xh" \
    843              ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh) enter\n", \
     706             ", "#t12" "#a12"=%08xh, "#t13" "#a13"=%08xh, "#t14" "#a14"=%08xh)", \
    844707             pszOdinDebugChannel,             \
    845708             a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14));  \
    846     CheckFS(sel)                              \
    847     ODIN_HEAPCHECK();                            \
    848     PROFILE_START(#cName)                      \
     709    FNPROLOGUE(#cName)                       \
    849710    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
    850     PROFILE_STOP(#cName)                      \
    851     ODIN_HEAPCHECK();                            \
    852     dprintf(("%s: void "#cName"() leave\n",    \
    853              pszOdinDebugChannel));           \
    854     SetFS(sel);      \
     711    dprintf(("%s: void "#cName"() leave\n",    \
     712             pszOdinDebugChannel));           \
     713    FNEPILOGUE       \
    855714  }                               \
    856715                                  \
     
    864723 ****************************************************************************/
    865724
    866 /* ---------- 0 parameters ---------- */
    867 #define ODINFUNCTION0(cRet,cName) \
    868   cRet ODIN_INTERNAL ODIN_##cName (void);\
    869   cRet WINAPI cName(void)  \
    870   {                               \
    871     unsigned short sel = RestoreOS2FS();  \
    872     cRet   rc  = ODIN_##cName();         \
    873     SetFS(sel);                   \
    874     return rc;                    \
    875   }                               \
    876                                   \
    877   cRet ODIN_INTERNAL ODIN_##cName (void)
    878 
    879 
    880 #define ODINPROCEDURE0(cName)     \
    881   void ODIN_INTERNAL ODIN_##cName (void);\
    882   void WINAPI cName(void)  \
    883   {                               \
    884     unsigned short sel = RestoreOS2FS();  \
    885                  ODIN_##cName();         \
    886                  SetFS(sel);      \
    887   }                               \
    888                                   \
    889   void ODIN_INTERNAL ODIN_##cName (void)
    890 
    891 
    892 /* ---------- 1 parameters ---------- */
    893 #define ODINFUNCTION1(cRet,cName,t1,a1)  \
    894   cRet ODIN_INTERNAL ODIN_##cName (t1 a1);\
    895   cRet WINAPI cName(t1 a1) \
    896   {                               \
    897     unsigned short sel = RestoreOS2FS();  \
    898     cRet   rc  = ODIN_##cName(a1);       \
    899     SetFS(sel);                   \
    900     return rc;                    \
    901   }                               \
    902                                   \
    903   cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
    904 
    905 #define ODINPROCEDURE1(cName,t1,a1)  \
    906   void ODIN_INTERNAL ODIN_##cName (t1 a1);\
    907   void WINAPI cName(t1 a1) \
    908   {                               \
    909     unsigned short sel = RestoreOS2FS();  \
    910                  ODIN_##cName(a1);       \
    911                  SetFS(sel);      \
    912   }                               \
    913                                   \
    914   void ODIN_INTERNAL ODIN_##cName (t1 a1)
    915 
    916 
    917 /* ---------- 2 parameters ---------- */
    918 #define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2)  \
    919   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);      \
    920   cRet WINAPI cName(t1 a1,t2 a2)        \
    921   {                               \
    922     unsigned short sel = RestoreOS2FS();  \
    923     cRet   rc  = ODIN_##cName(a1,a2);    \
    924     SetFS(sel);                   \
    925     return rc;                    \
    926   }                               \
    927                                   \
    928   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
    929 
    930 #define ODINPROCEDURE2(cName,t1,a1,t2,a2)  \
    931   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);\
    932   void WINAPI cName(t1 a1,t2 a2) \
    933   {                               \
    934     unsigned short sel = RestoreOS2FS();  \
    935                  ODIN_##cName(a1,a2);    \
    936                  SetFS(sel);      \
    937   }                               \
    938                                   \
    939   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
    940 
    941 
    942 /* ---------- 3 parameters ---------- */
    943 #define ODINFUNCTION3(cRet,cName,t1,a1,t2,a2,t3,a3)  \
    944   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3);      \
    945   cRet WINAPI cName(t1 a1,t2 a2,t3 a3)        \
    946   {                               \
    947     unsigned short sel = RestoreOS2FS();  \
    948     cRet   rc  = ODIN_##cName(a1,a2,a3); \
    949     SetFS(sel);                   \
    950     return rc;                    \
    951   }                               \
    952                                   \
    953   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
    954 
    955 #define ODINPROCEDURE3(cName,t1,a1,t2,a2,t3,a3)  \
    956   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3);  \
    957   void WINAPI cName(t1 a1,t2 a2,t3 a3)    \
    958   {                               \
    959     unsigned short sel = RestoreOS2FS();  \
    960                  ODIN_##cName(a1,a2,a3); \
    961                  SetFS(sel);      \
    962   }                               \
    963                                   \
    964   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
    965 
    966 
    967 /* ---------- 4 parameters ---------- */
    968 #define ODINFUNCTION4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4)  \
    969   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4);      \
    970   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)        \
    971   {                               \
    972     unsigned short sel = RestoreOS2FS();  \
    973     cRet   rc  = ODIN_##cName(a1,a2,a3,a4); \
    974     SetFS(sel);                   \
    975     return rc;                    \
    976   }                               \
    977                                   \
    978   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
    979 
    980 #define ODINPROCEDURE4(cName,t1,a1,t2,a2,t3,a3,t4,a4)  \
    981   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4);  \
    982   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)    \
    983   {                               \
    984     unsigned short sel = RestoreOS2FS();  \
    985                  ODIN_##cName(a1,a2,a3,a4); \
    986                  SetFS(sel);      \
    987   }                               \
    988                                   \
    989   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
    990 
    991 
    992 /* ---------- 5 parameters ---------- */
    993 #define ODINFUNCTION5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)  \
    994   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5);      \
    995   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)        \
    996   {                               \
    997     unsigned short sel = RestoreOS2FS();  \
    998     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5); \
    999     SetFS(sel);                   \
    1000     return rc;                    \
    1001   }                               \
    1002                                   \
    1003   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
    1004 
    1005 #define ODINPROCEDURE5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)  \
    1006   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5);  \
    1007   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)    \
    1008   {                               \
    1009     unsigned short sel = RestoreOS2FS();  \
    1010                  ODIN_##cName(a1,a2,a3,a4,a5); \
    1011                  SetFS(sel);      \
    1012   }                               \
    1013                                   \
    1014   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
    1015 
    1016 
    1017 /* ---------- 6 parameters ---------- */
    1018 #define ODINFUNCTION6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)  \
    1019   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6);      \
    1020   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)        \
    1021   {                               \
    1022     unsigned short sel = RestoreOS2FS();  \
    1023     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
    1024     SetFS(sel);                   \
    1025     return rc;                    \
    1026   }                               \
    1027                                   \
    1028   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
    1029 
    1030 
    1031 // @@@PH 1999/12/28 the following macro is a workaround for WINMM:waveOutOpen
    1032 // where the system needs to know about the win32 tib fs selector
    1033 #define ODINFUNCTION6FS(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)  \
    1034   cRet ODIN_INTERNAL ODIN_##cName (unsigned short selFS, t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6);      \
    1035   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)        \
    1036   {                               \
    1037     unsigned short sel = RestoreOS2FS();  \
    1038     cRet   rc  = ODIN_##cName(sel,a1,a2,a3,a4,a5,a6); \
    1039     SetFS(sel);                   \
    1040     return rc;                    \
    1041   }                               \
    1042                                   \
    1043   cRet ODIN_INTERNAL ODIN_##cName (unsigned short selFS, t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
    1044 
    1045 
    1046 #define ODINPROCEDURE6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)  \
    1047   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6);  \
    1048   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)    \
    1049   {                               \
    1050     unsigned short sel = RestoreOS2FS();  \
    1051                  ODIN_##cName(a1,a2,a3,a4,a5,a6); \
    1052                  SetFS(sel);      \
    1053   }                               \
    1054                                   \
    1055   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
    1056 
    1057 
    1058 /* ---------- 7 parameters ---------- */
    1059 #define ODINFUNCTION7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)  \
    1060   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7);      \
    1061   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)        \
    1062   {                               \
    1063     unsigned short sel = RestoreOS2FS();  \
    1064     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
    1065     SetFS(sel);                   \
    1066     return rc;                    \
    1067   }                               \
    1068                                   \
    1069   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
    1070 
    1071 #define ODINPROCEDURE7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)  \
    1072   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7);  \
    1073   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)    \
    1074   {                               \
    1075     unsigned short sel = RestoreOS2FS();  \
    1076                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
    1077                  SetFS(sel);      \
    1078   }                               \
    1079                                   \
    1080   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
    1081 
    1082 
    1083 /* ---------- 8 parameters ---------- */
    1084 #define ODINFUNCTION8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)  \
    1085   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8);      \
    1086   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)        \
    1087   {                               \
    1088     unsigned short sel = RestoreOS2FS();  \
    1089     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
    1090     SetFS(sel);                   \
    1091     return rc;                    \
    1092   }                               \
    1093                                   \
    1094   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
    1095 
    1096 #define ODINPROCEDURE8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)  \
    1097   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8);  \
    1098   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)    \
    1099   {                               \
    1100     unsigned short sel = RestoreOS2FS();  \
    1101                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
    1102                  SetFS(sel);      \
    1103   }                               \
    1104                                   \
    1105   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
    1106 
    1107 
    1108 /* ---------- 9 parameters ---------- */
    1109 #define ODINFUNCTION9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)  \
    1110   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9);      \
    1111   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)        \
    1112   {                               \
    1113     unsigned short sel = RestoreOS2FS();  \
    1114     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
    1115     SetFS(sel);                   \
    1116     return rc;                    \
    1117   }                               \
    1118                                   \
    1119   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
    1120 
    1121 #define ODINPROCEDURE9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)  \
    1122   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9);  \
    1123   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)    \
    1124   {                               \
    1125     unsigned short sel = RestoreOS2FS();  \
    1126                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
    1127                  SetFS(sel);      \
    1128   }                               \
    1129                                   \
    1130   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
    1131 
    1132 
    1133 /* ---------- 10 parameters ---------- */
    1134 #define ODINFUNCTION10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)  \
    1135   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);      \
    1136   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)        \
    1137   {                               \
    1138     unsigned short sel = RestoreOS2FS();  \
    1139     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
    1140     SetFS(sel);                   \
    1141     return rc;                    \
    1142   }                               \
    1143                                   \
    1144   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)
    1145 
    1146 #define ODINPROCEDURE10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)  \
    1147   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);  \
    1148   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)    \
    1149   {                               \
    1150     unsigned short sel = RestoreOS2FS();  \
    1151                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
    1152                  SetFS(sel);      \
    1153   }                               \
    1154                                   \
    1155   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)
    1156 
    1157 
    1158 /* ---------- 11 parameters ---------- */
    1159 #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)  \
    1160   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);      \
    1161   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)        \
    1162   {                               \
    1163     unsigned short sel = RestoreOS2FS();  \
    1164     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
    1165     SetFS(sel);                   \
    1166     return rc;                    \
    1167   }                               \
    1168                                   \
    1169   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)
    1170 
    1171 #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)  \
    1172   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);  \
    1173   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)    \
    1174   {                               \
    1175     unsigned short sel = RestoreOS2FS();  \
    1176                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
    1177                  SetFS(sel);      \
    1178   }                               \
    1179                                   \
    1180   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)
    1181 
    1182 
    1183 /* ---------- 12 parameters ---------- */
    1184 #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)  \
    1185   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);      \
    1186   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)        \
    1187   {                               \
    1188     unsigned short sel = RestoreOS2FS();  \
    1189     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
    1190     SetFS(sel);                   \
    1191     return rc;                    \
    1192   }                               \
    1193                                   \
    1194   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)
    1195 
    1196 #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)  \
    1197   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);  \
    1198   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)    \
    1199   {                               \
    1200     unsigned short sel = RestoreOS2FS();  \
    1201                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
    1202                  SetFS(sel);      \
    1203   }                               \
    1204                                   \
    1205   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)
    1206 
    1207 
     725#define ODINFUNCTION0   ODINFUNCTIONNODBG0
     726#define ODINFUNCTION1   ODINFUNCTIONNODBG0
     727#define ODINFUNCTION2   ODINFUNCTIONNODBG1
     728#define ODINFUNCTION3   ODINFUNCTIONNODBG2
     729#define ODINFUNCTION4   ODINFUNCTIONNODBG3
     730#define ODINFUNCTION5   ODINFUNCTIONNODBG4
     731#define ODINFUNCTION6   ODINFUNCTIONNODBG5
     732#define ODINFUNCTION7   ODINFUNCTIONNODBG6
     733#define ODINFUNCTION8   ODINFUNCTIONNODBG7
     734#define ODINFUNCTION9   ODINFUNCTIONNODBG8
     735#define ODINFUNCTION10  ODINFUNCTIONNODBG10
     736#define ODINFUNCTION11  ODINFUNCTIONNODBG11
     737#define ODINFUNCTION12  ODINFUNCTIONNODBG12
     738#define ODINFUNCTION13  ODINFUNCTIONNODBG13
     739#define ODINFUNCTION14  ODINFUNCTIONNODBG14
     740
     741#define ODINPROCEDURE0   ODINPROCEDURENODBG0
     742#define ODINPROCEDURE1   ODINPROCEDURENODBG0
     743#define ODINPROCEDURE2   ODINPROCEDURENODBG1
     744#define ODINPROCEDURE3   ODINPROCEDURENODBG2
     745#define ODINPROCEDURE4   ODINPROCEDURENODBG3
     746#define ODINPROCEDURE5   ODINPROCEDURENODBG4
     747#define ODINPROCEDURE6   ODINPROCEDURENODBG5
     748#define ODINPROCEDURE7   ODINPROCEDURENODBG6
     749#define ODINPROCEDURE8   ODINPROCEDURENODBG7
     750#define ODINPROCEDURE9   ODINPROCEDURENODBG8
     751#define ODINPROCEDURE10  ODINPROCEDURENODBG10
     752#define ODINPROCEDURE11  ODINPROCEDURENODBG11
     753#define ODINPROCEDURE12  ODINPROCEDURENODBG12
     754#define ODINPROCEDURE13  ODINPROCEDURENODBG13
     755#define ODINPROCEDURE14  ODINPROCEDURENODBG14
    1208756
    1209757#endif
     
    1214762
    1215763/* ---------- 0 parameters ---------- */
    1216 #define ODINFUNCTIONNODBG0(cRet,cName) \
    1217   cRet ODIN_INTERNAL ODIN_##cName (void);\
    1218   cRet WINAPI cName(void)  \
    1219   {                               \
    1220     unsigned short sel = RestoreOS2FS();  \
    1221     cRet   rc  = ODIN_##cName();         \
    1222     SetFS(sel);                   \
    1223     return rc;                    \
    1224   }                               \
    1225                                   \
    1226   cRet ODIN_INTERNAL ODIN_##cName (void)
    1227 
    1228 
    1229 #define ODINPROCEDURENODBG0(cName)     \
    1230   void ODIN_INTERNAL ODIN_##cName (void);\
    1231   void WINAPI cName(void)  \
    1232   {                               \
    1233     unsigned short sel = RestoreOS2FS();  \
    1234                  ODIN_##cName();         \
    1235                  SetFS(sel);      \
    1236   }                               \
    1237                                   \
    1238   void ODIN_INTERNAL ODIN_##cName (void)
    1239 
     764#define ODINFUNCTIONNODBG0(cRet,cName) cRet WINAPI cName(void)
     765#define ODINPROCEDURENODBG0(cName)     void WINAPI cName(void)
    1240766
    1241767/* ---------- 1 parameters ---------- */
    1242 #define ODINFUNCTIONNODBG1(cRet,cName,t1,a1)  \
    1243   cRet ODIN_INTERNAL ODIN_##cName (t1 a1);\
    1244   cRet WINAPI cName(t1 a1) \
    1245   {                               \
    1246     unsigned short sel = RestoreOS2FS();  \
    1247     cRet   rc  = ODIN_##cName(a1);       \
    1248     SetFS(sel);                   \
    1249     return rc;                    \
    1250   }                               \
    1251                                   \
    1252   cRet ODIN_INTERNAL ODIN_##cName (t1 a1)
    1253 
    1254 #define ODINPROCEDURENODBG1(cName,t1,a1)  \
    1255   void ODIN_INTERNAL ODIN_##cName (t1 a1);\
    1256   void WINAPI cName(t1 a1) \
    1257   {                               \
    1258     unsigned short sel = RestoreOS2FS();  \
    1259                  ODIN_##cName(a1);       \
    1260                  SetFS(sel);      \
    1261   }                               \
    1262                                   \
    1263   void ODIN_INTERNAL ODIN_##cName (t1 a1)
    1264 
     768#define ODINFUNCTIONNODBG1(cRet,cName,t1,a1) cRet WINAPI cName(t1 a1)
     769#define ODINPROCEDURENODBG1(cName,t1,a1)     void WINAPI cName(t1 a1)
    1265770
    1266771/* ---------- 2 parameters ---------- */
    1267 #define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2)  \
    1268   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);      \
    1269   cRet WINAPI cName(t1 a1,t2 a2)        \
    1270   {                               \
    1271     unsigned short sel = RestoreOS2FS();  \
    1272     cRet   rc  = ODIN_##cName(a1,a2);    \
    1273     SetFS(sel);                   \
    1274     return rc;                    \
    1275   }                               \
    1276                                   \
    1277   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
    1278 
    1279 #define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2)  \
    1280   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);\
    1281   void WINAPI cName(t1 a1,t2 a2) \
    1282   {                               \
    1283     unsigned short sel = RestoreOS2FS();  \
    1284                  ODIN_##cName(a1,a2);    \
    1285                  SetFS(sel);      \
    1286   }                               \
    1287                                   \
    1288   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
    1289 
     772#define ODINFUNCTIONNODBG2(cRet,cName,t1,a1,t2,a2) cRet WINAPI cName(t1 a1,t2 a2)
     773#define ODINPROCEDURENODBG2(cName,t1,a1,t2,a2)     void WINAPI cName(t1 a1,t2 a2)
    1290774
    1291775/* ---------- 3 parameters ---------- */
    1292 #define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3)  \
    1293   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3);      \
    1294   cRet WINAPI cName(t1 a1,t2 a2,t3 a3)        \
    1295   {                               \
    1296     unsigned short sel = RestoreOS2FS();  \
    1297     cRet   rc  = ODIN_##cName(a1,a2,a3); \
    1298     SetFS(sel);                   \
    1299     return rc;                    \
    1300   }                               \
    1301                                   \
    1302   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
    1303 
    1304 #define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3)  \
    1305   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3);  \
    1306   void WINAPI cName(t1 a1,t2 a2,t3 a3)    \
    1307   {                               \
    1308     unsigned short sel = RestoreOS2FS();  \
    1309                  ODIN_##cName(a1,a2,a3); \
    1310                  SetFS(sel);      \
    1311   }                               \
    1312                                   \
    1313   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3)
    1314 
     776#define ODINFUNCTIONNODBG3(cRet,cName,t1,a1,t2,a2,t3,a3)  cRet WINAPI cName(t1 a1,t2 a2,t3 a3)
     777#define ODINPROCEDURENODBG3(cName,t1,a1,t2,a2,t3,a3)      void WINAPI cName(t1 a1,t2 a2,t3 a3)
    1315778
    1316779/* ---------- 4 parameters ---------- */
    1317 #define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4)  \
    1318   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4);      \
    1319   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)        \
    1320   {                               \
    1321     unsigned short sel = RestoreOS2FS();  \
    1322     cRet   rc  = ODIN_##cName(a1,a2,a3,a4); \
    1323     SetFS(sel);                   \
    1324     return rc;                    \
    1325   }                               \
    1326                                   \
    1327   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
    1328 
    1329 #define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4)  \
    1330   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4);  \
    1331   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)    \
    1332   {                               \
    1333     unsigned short sel = RestoreOS2FS();  \
    1334                  ODIN_##cName(a1,a2,a3,a4); \
    1335                  SetFS(sel);      \
    1336   }                               \
    1337                                   \
    1338   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4)
    1339 
     780#define ODINFUNCTIONNODBG4(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4)  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
     781#define ODINPROCEDURENODBG4(cName,t1,a1,t2,a2,t3,a3,t4,a4)      void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4)
    1340782
    1341783/* ---------- 5 parameters ---------- */
    1342 #define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)  \
    1343   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5);      \
    1344   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)        \
    1345   {                               \
    1346     unsigned short sel = RestoreOS2FS();  \
    1347     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5); \
    1348     SetFS(sel);                   \
    1349     return rc;                    \
    1350   }                               \
    1351                                   \
    1352   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
    1353 
    1354 #define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)  \
    1355   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5);  \
    1356   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)    \
    1357   {                               \
    1358     unsigned short sel = RestoreOS2FS();  \
    1359                  ODIN_##cName(a1,a2,a3,a4,a5); \
    1360                  SetFS(sel);      \
    1361   }                               \
    1362                                   \
    1363   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
    1364 
     784#define ODINFUNCTIONNODBG5(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
     785#define ODINPROCEDURENODBG5(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)      void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5)
    1365786
    1366787/* ---------- 6 parameters ---------- */
    1367 #define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)  \
    1368   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6);      \
    1369   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)        \
    1370   {                               \
    1371     unsigned short sel = RestoreOS2FS();  \
    1372     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
    1373     SetFS(sel);                   \
    1374     return rc;                    \
    1375   }                               \
    1376                                   \
    1377   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
    1378 
    1379 #define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)  \
    1380   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6);  \
    1381   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)    \
    1382   {                               \
    1383     unsigned short sel = RestoreOS2FS();  \
    1384                  ODIN_##cName(a1,a2,a3,a4,a5,a6); \
    1385                  SetFS(sel);      \
    1386   }                               \
    1387                                   \
    1388   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
    1389 
     788#define ODINFUNCTIONNODBG6(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
     789#define ODINPROCEDURENODBG6(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)      void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6)
    1390790
    1391791/* ---------- 7 parameters ---------- */
    1392 #define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)  \
    1393   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7);      \
    1394   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)        \
    1395   {                               \
    1396     unsigned short sel = RestoreOS2FS();  \
    1397     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
    1398     SetFS(sel);                   \
    1399     return rc;                    \
    1400   }                               \
    1401                                   \
    1402   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
    1403 
    1404 #define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)  \
    1405   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7);  \
    1406   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)    \
    1407   {                               \
    1408     unsigned short sel = RestoreOS2FS();  \
    1409                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
    1410                  SetFS(sel);      \
    1411   }                               \
    1412                                   \
    1413   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
    1414 
     792#define ODINFUNCTIONNODBG7(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
     793#define ODINPROCEDURENODBG7(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)      void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7)
    1415794
    1416795/* ---------- 8 parameters ---------- */
    1417 #define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)  \
    1418   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8);      \
    1419   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)        \
    1420   {                               \
    1421     unsigned short sel = RestoreOS2FS();  \
    1422     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
    1423     SetFS(sel);                   \
    1424     return rc;                    \
    1425   }                               \
    1426                                   \
    1427   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
    1428 
    1429 #define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)  \
    1430   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8);  \
    1431   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)    \
    1432   {                               \
    1433     unsigned short sel = RestoreOS2FS();  \
    1434                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
    1435                  SetFS(sel);      \
    1436   }                               \
    1437                                   \
    1438   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
    1439 
     796#define ODINFUNCTIONNODBG8(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)  cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
     797#define ODINPROCEDURENODBG8(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)      void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8)
    1440798
    1441799/* ---------- 9 parameters ---------- */
    1442 #define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)  \
    1443   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9);      \
    1444   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)        \
    1445   {                               \
    1446     unsigned short sel = RestoreOS2FS();  \
    1447     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
    1448     SetFS(sel);                   \
    1449     return rc;                    \
    1450   }                               \
    1451                                   \
    1452   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
    1453 
    1454 #define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)  \
    1455   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9);  \
    1456   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)    \
    1457   {                               \
    1458     unsigned short sel = RestoreOS2FS();  \
    1459                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
    1460                  SetFS(sel);      \
    1461   }                               \
    1462                                   \
    1463   void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
    1464 
     800#define ODINFUNCTIONNODBG9(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
     801#define ODINPROCEDURENODBG9(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)       void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9)
    1465802
    1466803/* ---------- 10 parameters ---------- */
    1467 #define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)  \
    1468   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);      \
    1469   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)        \
    1470   {                               \
    1471     unsigned short sel = RestoreOS2FS();  \
    1472     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
    1473     SetFS(sel);                   \
    1474     return rc;                    \
    1475   }                               \
    1476                                   \
    1477   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)
    1478 
    1479 #define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)  \
    1480   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);  \
    1481   void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)    \
    1482   {                               \
    1483     unsigned short sel = RestoreOS2FS();  \
    1484                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
    1485                  SetFS(sel);      \
    1486   }                               \
    1487                                   \
    1488   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)
    1489 
     804#define ODINFUNCTIONNODBG10(cRet,cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)   cRet WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
     805#define ODINPROCEDURENODBG10(cName,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)       void WINAPI cName(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10)
    1490806
    1491807/* ---------- 11 parameters ---------- */
    1492 #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)  \
    1493   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);      \
    1494   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)        \
    1495   {                               \
    1496     unsigned short sel = RestoreOS2FS();  \
    1497     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
    1498     SetFS(sel);                   \
    1499     return rc;                    \
    1500   }                               \
    1501                                   \
    1502   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)
    1503 
    1504 #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)  \
    1505   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);  \
    1506   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)    \
    1507   {                               \
    1508     unsigned short sel = RestoreOS2FS();  \
    1509                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
    1510                  SetFS(sel);      \
    1511   }                               \
    1512                                   \
    1513   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)
    1514 
     808#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)  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)
     809#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)      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)
    1515810
    1516811/* ---------- 12 parameters ---------- */
    1517 #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)  \
    1518   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);      \
    1519   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)        \
    1520   {                               \
    1521     unsigned short sel = RestoreOS2FS();  \
    1522     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
    1523     SetFS(sel);                   \
    1524     return rc;                    \
    1525   }                               \
    1526                                   \
    1527   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)
    1528 
    1529 #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)  \
    1530   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);  \
    1531   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)    \
    1532   {                               \
    1533     unsigned short sel = RestoreOS2FS();  \
    1534                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
    1535                  SetFS(sel);      \
    1536   }                               \
    1537                                   \
    1538   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)
    1539 
     812#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)  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)
     813#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)      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)
    1540814
    1541815/* ---------- 13 parameters ---------- */
    1542816#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)  \
    1543   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);      \
    1544   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)        \
    1545   {                               \
    1546     unsigned short sel = RestoreOS2FS();  \
    1547     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
    1548     SetFS(sel);                   \
    1549     return rc;                    \
    1550   }                               \
    1551                                   \
    1552   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)
     817  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)
    1553818
    1554819#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)  \
    1555   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);  \
    1556   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)    \
    1557   {                               \
    1558     unsigned short sel = RestoreOS2FS();  \
    1559                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
    1560                  SetFS(sel);      \
    1561   }                               \
    1562                                   \
    1563   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)
    1564 
     820  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)
    1565821
    1566822/* ---------- 14 parameters ---------- */
    1567823#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)  \
    1568   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);      \
    1569   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)        \
    1570   {                               \
    1571     unsigned short sel = RestoreOS2FS();  \
    1572     cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
    1573     SetFS(sel);                   \
    1574     return rc;                    \
    1575   }                               \
    1576                                   \
    1577   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)
     824  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)
    1578825
    1579826#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)  \
    1580   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);  \
    1581   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)    \
    1582   {                               \
    1583     unsigned short sel = RestoreOS2FS();  \
    1584                  ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
    1585                  SetFS(sel);      \
    1586   }                               \
    1587                                   \
    1588   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)
     827  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)
    1589828
    1590829
Note: See TracChangeset for help on using the changeset viewer.