Fix compilation errors on FreeBSD.
[wine] / include / builtin16.h
1 /*
2  * Win16 built-in DLLs definitions
3  *
4  * Copyright 1999 Ulrich Weigand
5  */
6
7 #ifndef __WINE_BUILTIN16_H
8 #define __WINE_BUILTIN16_H
9
10 #include "windef.h"
11 #include "wine/windef16.h"
12
13 struct _CONTEXT86;
14 struct _STACK16FRAME;
15
16 #include "pshpack1.h"
17
18 #ifdef __i386__
19
20 typedef struct
21 {
22     WORD   pushw_bp;               /* pushw %bp */
23     BYTE   pushl;                  /* pushl $target */
24     void (*target)();
25     WORD   call;                   /* call CALLFROM16 */
26     short  callfrom16;
27 } ENTRYPOINT16;
28
29 typedef struct
30 {
31     BYTE   pushl;                  /* pushl $relay */
32     void  *relay;
33     BYTE   lcall;                  /* lcall __FLATCS__:glue */
34     void  *glue;
35     WORD   flatcs;
36     WORD   lret;                   /* lret $nArgs */
37     WORD   nArgs;
38     DWORD  arg_types[2];           /* type of each argument */
39 } CALLFROM16;
40
41 #else
42
43 typedef struct
44 {
45     void (*target)();
46     WORD   call;                   /* call CALLFROM16 */
47     short  callfrom16;
48 } ENTRYPOINT16;
49
50 typedef struct
51 {
52     WORD   lret;                   /* lret $nArgs */
53     WORD   nArgs;
54     DWORD  arg_types[2];           /* type of each argument */
55 } CALLFROM16;
56
57 #endif
58
59 #include "poppack.h"
60
61 /* argument type flags for relay debugging */
62 enum arg_types
63 {
64     ARG_NONE = 0, /* indicates end of arg list */
65     ARG_WORD,     /* unsigned word */
66     ARG_SWORD,    /* signed word */
67     ARG_LONG,     /* long or segmented pointer */
68     ARG_PTR,      /* linear pointer */
69     ARG_STR,      /* linear pointer to null-terminated string */
70     ARG_SEGSTR    /* segmented pointer to null-terminated string */
71 };
72
73 /* flags added to arg_types[0] */
74 #define ARG_RET16    0x80000000  /* function returns 16-bit value */
75 #define ARG_REGISTER 0x40000000  /* function is register */
76
77 extern HMODULE16 BUILTIN_LoadModule( LPCSTR name );
78
79 extern WORD __wine_call_from_16_word();
80 extern LONG __wine_call_from_16_long();
81 extern void __wine_call_from_16_regs();
82
83 #endif /* __WINE_BUILTIN16_H */