2 * Win16 built-in DLLs definitions
4 * Copyright 1999 Ulrich Weigand
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_BUILTIN16_H
22 #define __WINE_BUILTIN16_H
25 #include <wine/windef16.h>
36 WORD pushw_bp; /* pushw %bp */
37 BYTE pushl; /* pushl $target */
39 WORD call; /* call CALLFROM16 */
45 BYTE pushl; /* pushl $relay */
47 BYTE lcall; /* lcall __FLATCS__:glue */
50 WORD lret; /* lret $nArgs */
52 DWORD arg_types[2]; /* type of each argument */
60 WORD call; /* call CALLFROM16 */
66 WORD lret; /* lret $nArgs */
68 DWORD arg_types[2]; /* type of each argument */
75 /* argument type flags for relay debugging */
78 ARG_NONE = 0, /* indicates end of arg list */
79 ARG_WORD, /* unsigned word */
80 ARG_SWORD, /* signed word */
81 ARG_LONG, /* long or segmented pointer */
82 ARG_PTR, /* linear pointer */
83 ARG_STR, /* linear pointer to null-terminated string */
84 ARG_SEGSTR /* segmented pointer to null-terminated string */
87 /* flags added to arg_types[0] */
88 #define ARG_RET16 0x80000000 /* function returns 16-bit value */
89 #define ARG_REGISTER 0x40000000 /* function is register */
91 extern WORD __wine_call_from_16_word();
92 extern LONG __wine_call_from_16_long();
93 extern void __wine_call_from_16_regs();
95 #endif /* __WINE_BUILTIN16_H */