Changeset 5185 for trunk/src


Ignore:
Timestamp:
Feb 19, 2001, 6:56:00 AM (25 years ago)
Author:
bird
Message:

Added support for 16-bit overloading - not working yet though.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/win32k/dev16/mkcalltab.c

    r5102 r5185  
    1 /* $Id: mkcalltab.c,v 1.3 2001-02-11 15:15:12 bird Exp $
     1/* $Id: mkcalltab.c,v 1.4 2001-02-19 05:56:00 bird Exp $
    22 *
    33 * Description:     Generates the calltab.asm from aImportTab.
     
    113113     * Write Start of file.
    114114     */
    115     printf16("; $Id: mkcalltab.c,v 1.3 2001-02-11 15:15:12 bird Exp $\n"
     115    printf16("; $Id: mkcalltab.c,v 1.4 2001-02-19 05:56:00 bird Exp $\n"
    116116             ";\n"
    117117             "; Autogenerated calltab file.\n"
     
    136136             ";\n"
    137137             "    public callTab\n"
     138             "    public callTab16\n"
    138139             "    public auFuncs\n"
    139140             "\n"
     
    143144             ";\n"
    144145             "OVERLOAD32_PROLOG     EQU 14h\n"
    145              "OVERLOAD16_PROLOG     EQU 18h\n"
     146             "OVERLOAD16_PROLOG     EQU 14h\n"
    146147             "IMPORT32_PROLOG       EQU 08h\n"
    147148             "NRIMPORT32_PROLOG     EQU 06h\n"
     
    165166             "FnOverload16Entry macro fnname\n"
    166167             "    public fnname\n"
     168             "    public &fnname&_off\n"
     169             "    public &fnname&_sel\n"
    167170             "    fnname proc near\n"
    168171             "        db OVERLOAD16_PROLOG dup(0cch)\n"
    169172             "    fnname endp\n"
     173             "    &fnname&_off         dw  0\n"
     174             "    &fnname&_sel         dw  0\n"
    170175             "endm\n"
    171176             "\n"
     
    231236
    232237    /*
    233      * Process aImportTab.
     238     * Process aImportTab - all but 16-bit overrides.
    234239     */
    235240    for (i = 0; i < NBR_OF_KRNLIMPORTS; i++)
    236241    {
    237         char *pszMacro = (aImportTab[i].fType & EPT_VARIMPORT) ?
    238                                 "VariableEntry"
    239                             : (  (aImportTab[i].fType & EPT_PROCIMPORT) ?
    240                                ( (aImportTab[i].fType & EPT_NOT_REQ) ?
    241                                 (EPT16BitEntry(aImportTab[i]) ? "FnNRImport16Entry" : "FnNRImport32Entry")
    242                             :   (EPT16BitEntry(aImportTab[i]) ? "FnImport16Entry"   : "FnImport32Entry"))
    243                             :   (EPT16BitEntry(aImportTab[i]) ? "FnOverload16Entry" : "FnOverload32Entry"));
    244         char *pszName = &aImportTab[i].achName[(aImportTab[i].fType & EPT_VARIMPORT) && aImportTab[i].achName[0] == '_'];
    245         char *pszExtra = (aImportTab[i].fType & EPT_WRAPPED) ? "_wrapped" : aImportTab[i].achExtra;
    246 
    247         /*
    248          * Variable or Function?
    249          */
    250         printf16("%s<%s%s>%*.s;%d\n",
    251                  pszMacro,
    252                  pszName,
    253                  pszExtra,
    254                  45 - 2 - kstrlen(pszMacro) - aImportTab[i].cchName - kstrlen(pszExtra),
    255                  "",
    256                  i);
    257     }
    258 
    259     /*
    260      * Write End of Calltab and start of auFuncs.
     242        if (!EPT16Proc(aImportTab[i]))
     243        {
     244            char *pszMacro = (aImportTab[i].fType & EPT_VARIMPORT) ?
     245                                    "VariableEntry"
     246                                : (  (aImportTab[i].fType & EPT_PROCIMPORT) ?
     247                                   ( (aImportTab[i].fType & EPT_NOT_REQ) ?
     248                                    (EPT16BitEntry(aImportTab[i]) ? "FnNRImport16Entry" : "FnNRImport32Entry")
     249                                :   (EPT16BitEntry(aImportTab[i]) ? "FnImport16Entry"   : "FnImport32Entry"))
     250                                :   (EPT16BitEntry(aImportTab[i]) ? "FnOverload16Entry" : "FnOverload32Entry"));
     251            char *pszName = &aImportTab[i].achName[(aImportTab[i].fType & EPT_VARIMPORT) && aImportTab[i].achName[0] == '_'];
     252            char *pszExtra = (aImportTab[i].fType & EPT_WRAPPED) ? "_wrapped" : aImportTab[i].achExtra;
     253
     254            /*
     255             * Variable or Function?
     256             */
     257            printf16("%s<%s%s>%*.s;%d\n",
     258                     pszMacro,
     259                     pszName,
     260                     pszExtra,
     261                     45 - 2 - kstrlen(pszMacro) - aImportTab[i].cchName - kstrlen(pszExtra),
     262                     "",
     263                     i);
     264        }
     265    }
     266
     267    /*
     268     * Write End of Calltab and start of callTab16.
    261269     */
    262270    printf16("\n"
    263271             "CALLTAB ENDS\n"
     272             "\n"
     273             "\n"
     274             "DATA16 SEGMENT\n"
     275             "    assume ds:nothing, ss:nothing\n"
     276             ";\n"
     277             "; callTab16 is an array of function prologs with a jump to the real function\n"
     278             "; for 16-bit overrides.\n"
     279             ";\n"
     280             "; Overrided 16-bit OS/2 kernel functions are called thru this table.\n"
     281             ";\n"
     282             "callTab16:\n"
     283
     284             );
     285
     286    /*
     287     * Process aImportTab - 16 bit overrides.
     288     */
     289    for (i = 0; i < NBR_OF_KRNLIMPORTS; i++)
     290    {
     291        if (EPT16Proc(aImportTab[i]))
     292        {
     293
     294            printf16("FnOverload16Entry<%s>%*.s;%d\n",
     295                     aImportTab[i].achName,
     296                     45 - 2 - 17 - aImportTab[i].cchName,
     297                     "",
     298                     i);
     299        }
     300    }
     301
     302
     303    /*
     304     * Write End of Calltab and start of auFuncs.
     305     */
     306    printf16("\n"
     307             "DATA16 ENDS\n"
    264308             "\n"
    265309             "\n"
     
    283327        char *  pszName     = (*pszPrefix != '\0' ? &aImportTab[i].achName[1] : &aImportTab[i].achName[0]);
    284328
    285         if (!(aImportTab[i].fType & (EPT_PROCIMPORT | EPT_VARIMPORT | EPT_NOT_REQ)))
     329        if (EPT16Proc(aImportTab[i]))
     330        {   /* Overload procedure (Overloader function) */
     331            #if 1
     332            printf16("    extrn %smy%s%s : FAR\n"
     333                     "    dw  offset CODE%s:%smy%s%s\n"
     334                     "    dw  seg CODE%s:%smy%s%s\n",
     335                     pszPrefix,
     336                     pszName,
     337                     aImportTab[i].achExtra,
     338                     pszSeg,
     339                     pszPrefix,
     340                     pszName,
     341                     aImportTab[i].achExtra,
     342                     pszSeg,
     343                     pszPrefix,
     344                     pszName,
     345                     aImportTab[i].achExtra);
     346            #else
     347            printf16("    extrn %smy%s%s : FAR\n"
     348                     "    dd  far ptr CODE%s:%smy%s%s\n",
     349                     pszPrefix,
     350                     pszName,
     351                     aImportTab[i].achExtra,
     352                     pszSeg,
     353                     pszPrefix,
     354                     pszName,
     355                     aImportTab[i].achExtra);
     356            #endif
     357        }
     358        else if (!(aImportTab[i].fType & (EPT_PROCIMPORT | EPT_VARIMPORT | EPT_NOT_REQ)))
    286359        {   /* Overload procedure (Overloader function) */
    287360            printf16("    extrn %smy%s%s : NEAR\n"
     
    335408     * Write Start of file.
    336409     */
    337     printf16("/* $Id: mkcalltab.c,v 1.3 2001-02-11 15:15:12 bird Exp $\n"
     410    printf16("/* $Id: mkcalltab.c,v 1.4 2001-02-19 05:56:00 bird Exp $\n"
    338411             " *\n"
    339412             " * Autogenerated TstFakers.c file.\n"
Note: See TracChangeset for help on using the changeset viewer.