123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*
- * Win16 built-in DLLs definitions
- *
- * Copyright 1999 Ulrich Weigand
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- #ifndef __WINE_BUILTIN16_H
- #define __WINE_BUILTIN16_H
- #include <windef.h>
- #include <wine/windef16.h>
- struct _CONTEXT86;
- struct _STACK16FRAME;
- #include <pshpack1.h>
- #ifdef __i386__
- typedef struct
- {
- WORD pushw_bp; /* pushw %bp */
- BYTE pushl; /* pushl $target */
- void (*target)();
- WORD call; /* call CALLFROM16 */
- short callfrom16;
- } ENTRYPOINT16;
- typedef struct
- {
- BYTE pushl; /* pushl $relay */
- void *relay;
- BYTE lcall; /* lcall __FLATCS__:glue */
- void *glue;
- WORD flatcs;
- WORD lret; /* lret $nArgs */
- WORD nArgs;
- DWORD arg_types[2]; /* type of each argument */
- } CALLFROM16;
- #else
- typedef struct
- {
- void (*target)();
- WORD call; /* call CALLFROM16 */
- short callfrom16;
- } ENTRYPOINT16;
- typedef struct
- {
- WORD lret; /* lret $nArgs */
- WORD nArgs;
- DWORD arg_types[2]; /* type of each argument */
- } CALLFROM16;
- #endif
- #include <poppack.h>
- /* argument type flags for relay debugging */
- enum arg_types
- {
- ARG_NONE = 0, /* indicates end of arg list */
- ARG_WORD, /* unsigned word */
- ARG_SWORD, /* signed word */
- ARG_LONG, /* long or segmented pointer */
- ARG_PTR, /* linear pointer */
- ARG_STR, /* linear pointer to null-terminated string */
- ARG_SEGSTR /* segmented pointer to null-terminated string */
- };
- /* flags added to arg_types[0] */
- #define ARG_RET16 0x80000000 /* function returns 16-bit value */
- #define ARG_REGISTER 0x40000000 /* function is register */
- extern WORD __wine_call_from_16_word();
- extern LONG __wine_call_from_16_long();
- extern void __wine_call_from_16_regs();
- #endif /* __WINE_BUILTIN16_H */
|