summaryrefslogtreecommitdiffstats
path: root/loader/wine/winnt.h
diff options
context:
space:
mode:
Diffstat (limited to 'loader/wine/winnt.h')
-rw-r--r--loader/wine/winnt.h2663
1 files changed, 0 insertions, 2663 deletions
diff --git a/loader/wine/winnt.h b/loader/wine/winnt.h
deleted file mode 100644
index cb9984a1c4..0000000000
--- a/loader/wine/winnt.h
+++ /dev/null
@@ -1,2663 +0,0 @@
-/*
- * Win32 definitions for Windows NT
- *
- * Copyright 1996 Alexandre Julliard
- */
-
-#ifndef MPLAYER_WINNT_H
-#define MPLAYER_WINNT_H
-
-#include "windef.h"
-
-#ifndef RC_INVOKED
-#include <string.h>
-#endif
-
-#include "pshpack1.h"
-/* Defines */
-
-/* Argument 1 passed to the DllEntryProc. */
-#define DLL_PROCESS_DETACH 0 /* detach process (unload library) */
-#define DLL_PROCESS_ATTACH 1 /* attach process (load library) */
-#define DLL_THREAD_ATTACH 2 /* attach new thread */
-#define DLL_THREAD_DETACH 3 /* detach thread */
-
-
-/* u.x.wProcessorArchitecture (NT) */
-#define PROCESSOR_ARCHITECTURE_INTEL 0
-#define PROCESSOR_ARCHITECTURE_MIPS 1
-#define PROCESSOR_ARCHITECTURE_ALPHA 2
-#define PROCESSOR_ARCHITECTURE_PPC 3
-#define PROCESSOR_ARCHITECTURE_SHX 4
-#define PROCESSOR_ARCHITECTURE_ARM 5
-#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
-
-/* dwProcessorType */
-#define PROCESSOR_INTEL_386 386
-#define PROCESSOR_INTEL_486 486
-#define PROCESSOR_INTEL_PENTIUM 586
-#define PROCESSOR_INTEL_860 860
-#define PROCESSOR_MIPS_R2000 2000
-#define PROCESSOR_MIPS_R3000 3000
-#define PROCESSOR_MIPS_R4000 4000
-#define PROCESSOR_ALPHA_21064 21064
-#define PROCESSOR_PPC_601 601
-#define PROCESSOR_PPC_603 603
-#define PROCESSOR_PPC_604 604
-#define PROCESSOR_PPC_620 620
-#define PROCESSOR_HITACHI_SH3 10003
-#define PROCESSOR_HITACHI_SH3E 10004
-#define PROCESSOR_HITACHI_SH4 10005
-#define PROCESSOR_MOTOROLA_821 821
-#define PROCESSOR_SHx_SH3 103
-#define PROCESSOR_SHx_SH4 104
-#define PROCESSOR_STRONGARM 2577
-#define PROCESSOR_ARM720 1824 /* 0x720 */
-#define PROCESSOR_ARM820 2080 /* 0x820 */
-#define PROCESSOR_ARM920 2336 /* 0x920 */
-#define PROCESSOR_ARM_7TDMI 70001
-
-#define ANYSIZE_ARRAY 1
-
-#define MINCHAR 0x80
-#define MAXCHAR 0x7f
-#define MINSHORT 0x8000
-#define MAXSHORT 0x7fff
-#define MINLONG 0x80000000
-#define MAXLONG 0x7fffffff
-#define MAXBYTE 0xff
-#define MAXWORD 0xffff
-#define MAXDWORD 0xffffffff
-
-#define FIELD_OFFSET(type, field) \
- ((LONG)(INT)&(((type *)0)->field))
-
-#define CONTAINING_RECORD(address, type, field) \
- ((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
-
-/* Types */
-
-/* TCHAR data types definitions for Winelib. */
-/* These types are _not_ defined for the emulator, because they */
-/* depend on the UNICODE macro that only exists in user's code. */
-
-# ifdef UNICODE
-typedef WCHAR TCHAR, *PTCHAR;
-typedef LPWSTR PTSTR, LPTSTR;
-typedef LPCWSTR PCTSTR, LPCTSTR;
-#define TEXT(string) L##string /*probably wrong */
-# else /* UNICODE */
-typedef char TCHAR, *PTCHAR;
-typedef LPSTR PTSTR, LPTSTR;
-typedef LPCSTR PCTSTR, LPCTSTR;
-#define TEXT(string) string
-# endif /* UNICODE */
-
-typedef BYTE BOOLEAN;
-typedef BOOLEAN *PBOOLEAN;
-
-typedef struct LIST_ENTRY {
- struct LIST_ENTRY *Flink;
- struct LIST_ENTRY *Blink;
-} LIST_ENTRY, *PLIST_ENTRY;
-
-typedef struct SINGLE_LIST_ENTRY {
- struct SINGLE_LIST_ENTRY *Next;
-} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
-
-/* Heap flags */
-
-#define HEAP_NO_SERIALIZE 0x00000001
-#define HEAP_GROWABLE 0x00000002
-#define HEAP_GENERATE_EXCEPTIONS 0x00000004
-#define HEAP_ZERO_MEMORY 0x00000008
-#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
-#define HEAP_TAIL_CHECKING_ENABLED 0x00000020
-#define HEAP_FREE_CHECKING_ENABLED 0x00000040
-#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
-#define HEAP_CREATE_ALIGN_16 0x00010000
-#define HEAP_CREATE_ENABLE_TRACING 0x00020000
-#define HEAP_WINE_SEGPTR 0x01000000 /* Not a Win32 flag */
-#define HEAP_WINE_CODESEG 0x02000000 /* Not a Win32 flag */
-#define HEAP_WINE_CODE16SEG 0x04000000 /* Not a Win32 flag */
-#define HEAP_WINE_SHARED 0x08000000 /* Not a Win32 flag */
-
-/* Processor feature flags. */
-#define PF_FLOATING_POINT_PRECISION_ERRATA 0
-#define PF_FLOATING_POINT_EMULATED 1
-#define PF_COMPARE_EXCHANGE_DOUBLE 2
-#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
-#define PF_PPC_MOVEMEM_64BIT_OK 4
-#define PF_ALPHA_BYTE_INSTRUCTIONS 5
-/* based on wine-20010510 -- alex */
-#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
-#define PF_AMD3D_INSTRUCTIONS_AVAILABLE 7
-#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
-#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
-
-/* The Win32 register context */
-
-/* CONTEXT is the CPU-dependent context; it should be used */
-/* wherever a platform-specific context is needed (e.g. exception */
-/* handling, Win32 register functions). */
-
-/* CONTEXT86 is the i386-specific context; it should be used */
-/* wherever only a 386 context makes sense (e.g. DOS interrupts, */
-/* Win16 register functions), so that this code can be compiled */
-/* on all platforms. */
-
-#define SIZE_OF_80387_REGISTERS 80
-
-typedef struct FLOATING_SAVE_AREA
-{
- DWORD ControlWord;
- DWORD StatusWord;
- DWORD TagWord;
- DWORD ErrorOffset;
- DWORD ErrorSelector;
- DWORD DataOffset;
- DWORD DataSelector;
- BYTE RegisterArea[SIZE_OF_80387_REGISTERS];
- DWORD Cr0NpxState;
-} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
-
-typedef struct CONTEXT86
-{
- DWORD ContextFlags;
-
- /* These are selected by CONTEXT_DEBUG_REGISTERS */
- DWORD Dr0;
- DWORD Dr1;
- DWORD Dr2;
- DWORD Dr3;
- DWORD Dr6;
- DWORD Dr7;
-
- /* These are selected by CONTEXT_FLOATING_POINT */
- FLOATING_SAVE_AREA FloatSave;
-
- /* These are selected by CONTEXT_SEGMENTS */
- DWORD SegGs;
- DWORD SegFs;
- DWORD SegEs;
- DWORD SegDs;
-
- /* These are selected by CONTEXT_INTEGER */
- DWORD Edi;
- DWORD Esi;
- DWORD Ebx;
- DWORD Edx;
- DWORD Ecx;
- DWORD Eax;
-
- /* These are selected by CONTEXT_CONTROL */
- DWORD Ebp;
- DWORD Eip;
- DWORD SegCs;
- DWORD EFlags;
- DWORD Esp;
- DWORD SegSs;
-} CONTEXT86;
-
-#define CONTEXT_X86 0x00010000
-#define CONTEXT_i386 CONTEXT_X86
-#define CONTEXT_i486 CONTEXT_X86
-
-#define CONTEXT86_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
-#define CONTEXT86_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
-#define CONTEXT86_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
-#define CONTEXT86_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state */
-#define CONTEXT86_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
-#define CONTEXT86_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS)
-
-/* i386 context definitions */
-#if ARCH_X86_32
-
-#define CONTEXT_CONTROL CONTEXT86_CONTROL
-#define CONTEXT_INTEGER CONTEXT86_INTEGER
-#define CONTEXT_SEGMENTS CONTEXT86_SEGMENTS
-#define CONTEXT_FLOATING_POINT CONTEXT86_FLOATING_POINT
-#define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS
-#define CONTEXT_FULL CONTEXT86_FULL
-
-typedef CONTEXT86 CONTEXT;
-
-#endif /* ARCH_X86_32 */
-
-/* Alpha context definitions */
-#if defined(_ALPHA_) || defined(__alpha__)
-
-#define CONTEXT_ALPHA 0x00020000
-
-#define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)
-#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)
-#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
-#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
-
-typedef struct CONTEXT
-{
- /* selected by CONTEXT_FLOATING_POINT */
- ULONGLONG FltF0;
- ULONGLONG FltF1;
- ULONGLONG FltF2;
- ULONGLONG FltF3;
- ULONGLONG FltF4;
- ULONGLONG FltF5;
- ULONGLONG FltF6;
- ULONGLONG FltF7;
- ULONGLONG FltF8;
- ULONGLONG FltF9;
- ULONGLONG FltF10;
- ULONGLONG FltF11;
- ULONGLONG FltF12;
- ULONGLONG FltF13;
- ULONGLONG FltF14;
- ULONGLONG FltF15;
- ULONGLONG FltF16;
- ULONGLONG FltF17;
- ULONGLONG FltF18;
- ULONGLONG FltF19;
- ULONGLONG FltF20;
- ULONGLONG FltF21;
- ULONGLONG FltF22;
- ULONGLONG FltF23;
- ULONGLONG FltF24;
- ULONGLONG FltF25;
- ULONGLONG FltF26;
- ULONGLONG FltF27;
- ULONGLONG FltF28;
- ULONGLONG FltF29;
- ULONGLONG FltF30;
- ULONGLONG FltF31;
-
- /* selected by CONTEXT_INTEGER */
- ULONGLONG IntV0;
- ULONGLONG IntT0;
- ULONGLONG IntT1;
- ULONGLONG IntT2;
- ULONGLONG IntT3;
- ULONGLONG IntT4;
- ULONGLONG IntT5;
- ULONGLONG IntT6;
- ULONGLONG IntT7;
- ULONGLONG IntS0;
- ULONGLONG IntS1;
- ULONGLONG IntS2;
- ULONGLONG IntS3;
- ULONGLONG IntS4;
- ULONGLONG IntS5;
- ULONGLONG IntFp;
- ULONGLONG IntA0;
- ULONGLONG IntA1;
- ULONGLONG IntA2;
- ULONGLONG IntA3;
- ULONGLONG IntA4;
- ULONGLONG IntA5;
- ULONGLONG IntT8;
- ULONGLONG IntT9;
- ULONGLONG IntT10;
- ULONGLONG IntT11;
- ULONGLONG IntRa;
- ULONGLONG IntT12;
- ULONGLONG IntAt;
- ULONGLONG IntGp;
- ULONGLONG IntSp;
- ULONGLONG IntZero;
-
- /* selected by CONTEXT_FLOATING_POINT */
- ULONGLONG Fpcr;
- ULONGLONG SoftFpcr;
-
- /* selected by CONTEXT_CONTROL */
- ULONGLONG Fir;
- DWORD Psr;
- DWORD ContextFlags;
- DWORD Fill[4];
-} CONTEXT;
-
-#define QUAD_PSR_OFFSET HighSoftFpcr
-#define QUAD_FLAGS_OFFSET HighFir
-
-#endif /* _ALPHA_ */
-
-/* Mips context definitions */
-#ifdef _MIPS_
-
-#define CONTEXT_R4000 0x00010000
-
-#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001)
-#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002)
-#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004)
-
-#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
-
-typedef struct CONTEXT
-{
- DWORD Argument[4];
- /* These are selected by CONTEXT_FLOATING_POINT */
- DWORD FltF0;
- DWORD FltF1;
- DWORD FltF2;
- DWORD FltF3;
- DWORD FltF4;
- DWORD FltF5;
- DWORD FltF6;
- DWORD FltF7;
- DWORD FltF8;
- DWORD FltF9;
- DWORD FltF10;
- DWORD FltF11;
- DWORD FltF12;
- DWORD FltF13;
- DWORD FltF14;
- DWORD FltF15;
- DWORD FltF16;
- DWORD FltF17;
- DWORD FltF18;
- DWORD FltF19;
- DWORD FltF20;
- DWORD FltF21;
- DWORD FltF22;
- DWORD FltF23;
- DWORD FltF24;
- DWORD FltF25;
- DWORD FltF26;
- DWORD FltF27;
- DWORD FltF28;
- DWORD FltF29;
- DWORD FltF30;
- DWORD FltF31;
-
- /* These are selected by CONTEXT_INTEGER */
- DWORD IntZero;
- DWORD IntAt;
- DWORD IntV0;
- DWORD IntV1;
- DWORD IntA0;
- DWORD IntA1;
- DWORD IntA2;
- DWORD IntA3;
- DWORD IntT0;
- DWORD IntT1;
- DWORD IntT2;
- DWORD IntT3;
- DWORD IntT4;
- DWORD IntT5;
- DWORD IntT6;
- DWORD IntT7;
- DWORD IntS0;
- DWORD IntS1;
- DWORD IntS2;
- DWORD IntS3;
- DWORD IntS4;
- DWORD IntS5;
- DWORD IntS6;
- DWORD IntS7;
- DWORD IntT8;
- DWORD IntT9;
- DWORD IntK0;
- DWORD IntK1;
- DWORD IntGp;
- DWORD IntSp;
- DWORD IntS8;
- DWORD IntRa;
- DWORD IntLo;
- DWORD IntHi;
-
- /* These are selected by CONTEXT_FLOATING_POINT */
- DWORD Fsr;
-
- /* These are selected by CONTEXT_CONTROL */
- DWORD Fir;
- DWORD Psr;
-
- DWORD ContextFlags;
- DWORD Fill[2];
-} CONTEXT;
-
-#endif /* _MIPS_ */
-
-/* PowerPC context definitions */
-#ifdef __PPC__
-
-#define CONTEXT_CONTROL 0x0001
-#define CONTEXT_FLOATING_POINT 0x0002
-#define CONTEXT_INTEGER 0x0004
-#define CONTEXT_DEBUG_REGISTERS 0x0008
-#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
-
-typedef struct
-{
- /* These are selected by CONTEXT_FLOATING_POINT */
- double Fpr0;
- double Fpr1;
- double Fpr2;
- double Fpr3;
- double Fpr4;
- double Fpr5;
- double Fpr6;
- double Fpr7;
- double Fpr8;
- double Fpr9;
- double Fpr10;
- double Fpr11;
- double Fpr12;
- double Fpr13;
- double Fpr14;
- double Fpr15;
- double Fpr16;
- double Fpr17;
- double Fpr18;
- double Fpr19;
- double Fpr20;
- double Fpr21;
- double Fpr22;
- double Fpr23;
- double Fpr24;
- double Fpr25;
- double Fpr26;
- double Fpr27;
- double Fpr28;
- double Fpr29;
- double Fpr30;
- double Fpr31;
- double Fpscr;
-
- /* These are selected by CONTEXT_INTEGER */
- DWORD Gpr0;
- DWORD Gpr1;
- DWORD Gpr2;
- DWORD Gpr3;
- DWORD Gpr4;
- DWORD Gpr5;
- DWORD Gpr6;
- DWORD Gpr7;
- DWORD Gpr8;
- DWORD Gpr9;
- DWORD Gpr10;
- DWORD Gpr11;
- DWORD Gpr12;
- DWORD Gpr13;
- DWORD Gpr14;
- DWORD Gpr15;
- DWORD Gpr16;
- DWORD Gpr17;
- DWORD Gpr18;
- DWORD Gpr19;
- DWORD Gpr20;
- DWORD Gpr21;
- DWORD Gpr22;
- DWORD Gpr23;
- DWORD Gpr24;
- DWORD Gpr25;
- DWORD Gpr26;
- DWORD Gpr27;
- DWORD Gpr28;
- DWORD Gpr29;
- DWORD Gpr30;
- DWORD Gpr31;
-
- DWORD Cr;
- DWORD Xer;
-
- /* These are selected by CONTEXT_CONTROL */
- DWORD Msr;
- DWORD Iar;
- DWORD Lr;
- DWORD Ctr;
-
- DWORD ContextFlags;
- DWORD Fill[3];
-
- /* These are selected by CONTEXT_DEBUG_REGISTERS */
- DWORD Dr0;
- DWORD Dr1;
- DWORD Dr2;
- DWORD Dr3;
- DWORD Dr4;
- DWORD Dr5;
- DWORD Dr6;
- DWORD Dr7;
-} CONTEXT;
-
-typedef struct STACK_FRAME_HEADER
-{
- DWORD BackChain;
- DWORD GlueSaved1;
- DWORD GlueSaved2;
- DWORD Reserved1;
- DWORD Spare1;
- DWORD Spare2;
-
- DWORD Parameter0;
- DWORD Parameter1;
- DWORD Parameter2;
- DWORD Parameter3;
- DWORD Parameter4;
- DWORD Parameter5;
- DWORD Parameter6;
- DWORD Parameter7;
-} STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER;
-
-#endif /* __PPC__ */
-
-#ifdef __sparc__
-
-/*
- * FIXME:
- *
- * There is no official CONTEXT structure defined for the SPARC
- * architecture, so I just made one up.
- *
- * This structure is valid only for 32-bit SPARC architectures,
- * not for 64-bit SPARC.
- *
- * Note that this structure contains only the 'top-level' registers;
- * the rest of the register window chain is not visible.
- *
- * The layout follows the Solaris 'prgregset_t' structure.
- *
- */
-
-#define CONTEXT_SPARC 0x10000000
-
-#define CONTEXT_CONTROL (CONTEXT_SPARC | 0x00000001)
-#define CONTEXT_FLOATING_POINT (CONTEXT_SPARC | 0x00000002)
-#define CONTEXT_INTEGER (CONTEXT_SPARC | 0x00000004)
-
-#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
-
-typedef struct CONTEXT
-{
- DWORD ContextFlags;
-
- /* These are selected by CONTEXT_INTEGER */
- DWORD g0;
- DWORD g1;
- DWORD g2;
- DWORD g3;
- DWORD g4;
- DWORD g5;
- DWORD g6;
- DWORD g7;
- DWORD o0;
- DWORD o1;
- DWORD o2;
- DWORD o3;
- DWORD o4;
- DWORD o5;
- DWORD o6;
- DWORD o7;
- DWORD l0;
- DWORD l1;
- DWORD l2;
- DWORD l3;
- DWORD l4;
- DWORD l5;
- DWORD l6;
- DWORD l7;
- DWORD i0;
- DWORD i1;
- DWORD i2;
- DWORD i3;
- DWORD i4;
- DWORD i5;
- DWORD i6;
- DWORD i7;
-
- /* These are selected by CONTEXT_CONTROL */
- DWORD psr;
- DWORD pc;
- DWORD npc;
- DWORD y;
- DWORD wim;
- DWORD tbr;
-
- /* FIXME: floating point registers missing */
-
-} CONTEXT;
-
-#endif /* __sparc__ */
-
-#if !defined(CONTEXT_FULL) && !defined(RC_INVOKED)
-#warning You need to define a CONTEXT for your CPU
-typedef void CONTEXT;
-#endif
-
-typedef CONTEXT *PCONTEXT;
-typedef HANDLE *PHANDLE;
-
-/* Macros for easier access to i386 context registers */
-
-#define EAX_reg(context) ((context)->Eax)
-#define EBX_reg(context) ((context)->Ebx)
-#define ECX_reg(context) ((context)->Ecx)
-#define EDX_reg(context) ((context)->Edx)
-#define ESI_reg(context) ((context)->Esi)
-#define EDI_reg(context) ((context)->Edi)
-#define EBP_reg(context) ((context)->Ebp)
-
-#define CS_reg(context) ((context)->SegCs)
-#define DS_reg(context) ((context)->SegDs)
-#define ES_reg(context) ((context)->SegEs)
-#define FS_reg(context) ((context)->SegFs)
-#define GS_reg(context) ((context)->SegGs)
-#define SS_reg(context) ((context)->SegSs)
-
-#define EFL_reg(context) ((context)->EFlags)
-#define EIP_reg(context) ((context)->Eip)
-#define ESP_reg(context) ((context)->Esp)
-
-#define AX_reg(context) (*(WORD*)&EAX_reg(context))
-#define BX_reg(context) (*(WORD*)&EBX_reg(context))
-#define CX_reg(context) (*(WORD*)&ECX_reg(context))
-#define DX_reg(context) (*(WORD*)&EDX_reg(context))
-#define SI_reg(context) (*(WORD*)&ESI_reg(context))
-#define DI_reg(context) (*(WORD*)&EDI_reg(context))
-#define BP_reg(context) (*(WORD*)&EBP_reg(context))
-
-#define AL_reg(context) (*(BYTE*)&EAX_reg(context))
-#define AH_reg(context) (*((BYTE*)&EAX_reg(context)+1))
-#define BL_reg(context) (*(BYTE*)&EBX_reg(context))
-#define BH_reg(context) (*((BYTE*)&EBX_reg(context)+1))
-#define CL_reg(context) (*(BYTE*)&ECX_reg(context))
-#define CH_reg(context) (*((BYTE*)&ECX_reg(context)+1))
-#define DL_reg(context) (*(BYTE*)&EDX_reg(context))
-#define DH_reg(context) (*((BYTE*)&EDX_reg(context)+1))
-
-#define SET_CFLAG(context) (EFL_reg(context) |= 0x0001)
-#define RESET_CFLAG(context) (EFL_reg(context) &= ~0x0001)
-#define SET_ZFLAG(context) (EFL_reg(context) |= 0x0040)
-#define RESET_ZFLAG(context) (EFL_reg(context) &= ~0x0040)
-
-#define ISV86(context) (EFL_reg(context) & 0x00020000)
-#define V86BASE(context) ((context)->Dr7) /* ugly */
-
-
-/* Macros to retrieve the current context */
-
-#if ARCH_X86_32
-
-#ifdef NEED_UNDERSCORE_PREFIX
-# define ASM_NAME(name) "_" name
-#else
-# define ASM_NAME(name) name
-#endif
-
-#ifdef __GNUC__
-# define ASM_GLOBAL_FUNC(name,code) \
- __asm__( ".align 4\n\t" \
- ".globl " ASM_NAME(#name) "\n\t" \
- ".type " ASM_NAME(#name) ",@function\n" \
- ASM_NAME(#name) ":\n\t" \
- code );
-#else /* __GNUC__ */
-# define ASM_GLOBAL_FUNC(name,code) \
- void asm_dummy_##name(void) { \
- __asm__( ".align 4\n\t" \
- ".globl " ASM_NAME(#name) "\n\t" \
- ".type " ASM_NAME(#name) ",@function\n" \
- ASM_NAME(#name) ":\n\t" \
- code ); \
- }
-#endif /* __GNUC__ */
-
-#define DEFINE_REGS_ENTRYPOINT( name, fn, args ) \
- ASM_GLOBAL_FUNC( name, \
- "call " ASM_NAME("CALL32_Regs") "\n\t" \
- ".long " ASM_NAME(#fn) "\n\t" \
- ".byte " #args ", " #args )
-#define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \
- DEFINE_REGS_ENTRYPOINT( name, fn, 0 )
-#define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \
- DEFINE_REGS_ENTRYPOINT( name, fn, 4 )
-#define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \
- DEFINE_REGS_ENTRYPOINT( name, fn, 8 )
-#define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \
- DEFINE_REGS_ENTRYPOINT( name, fn, 12 )
-#define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \
- DEFINE_REGS_ENTRYPOINT( name, fn, 16 )
-
-#endif /* ARCH_X86_32 */
-
-#ifdef __sparc__
-/* FIXME: use getcontext() to retrieve full context */
-#define GET_CONTEXT \
- CONTEXT context; \
- do { memset(&context, 0, sizeof(CONTEXT)); \
- context.ContextFlags = CONTEXT_CONTROL; \
- context.pc = (DWORD)__builtin_return_address(0); \
- } while (0)
-
-#define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \
- void WINAPI name ( void ) \
- { GET_CONTEXT; fn( &context ); }
-#define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \
- void WINAPI name ( t1 a1 ) \
- { GET_CONTEXT; fn( a1, &context ); }
-#define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \
- void WINAPI name ( t1 a1, t2 a2 ) \
- { GET_CONTEXT; fn( a1, a2, &context ); }
-#define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \
- void WINAPI name ( t1 a1, t2 a2, t3 a3 ) \
- { GET_CONTEXT; fn( a1, a2, a3, &context ); }
-#define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \
- void WINAPI name ( t1 a1, t2 a2, t3 a3, t4 a4 ) \
- { GET_CONTEXT; fn( a1, a2, a3, a4, &context ); }
-
-#endif /* __sparc__ */
-
-#ifndef DEFINE_REGS_ENTRYPOINT_0
-#warning You need to define DEFINE_REGS_ENTRYPOINT macros for your CPU
-#endif
-
-#if ARCH_X86_32
-# define GET_IP(context) ((LPVOID)(context)->Eip)
-#endif
-#ifdef __sparc__
-# define GET_IP(context) ((LPVOID)(context)->pc)
-#endif
-
-#if !defined(GET_IP) && !defined(RC_INVOKED)
-#warning You must define GET_IP for this CPU
-#endif
-
-/*
- * Exception codes
- */
-
-#define STATUS_SUCCESS 0x00000000
-#define STATUS_WAIT_0 0x00000000
-#define STATUS_ABANDONED_WAIT_0 0x00000080
-#define STATUS_USER_APC 0x000000C0
-#define STATUS_TIMEOUT 0x00000102
-#define STATUS_PENDING 0x00000103
-
-#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
-#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
-#define STATUS_BREAKPOINT 0x80000003
-#define STATUS_SINGLE_STEP 0x80000004
-#define STATUS_BUFFER_OVERFLOW 0x80000005
-#define STATUS_NO_MORE_FILES 0x80000006
-#define STATUS_WAKE_SYSTEM_DEBUGGER 0x80000007
-
-#define STATUS_HANDLES_CLOSED 0x8000000A
-#define STATUS_NO_INHERITANCE 0x8000000B
-#define STATUS_GUID_SUBSTITUTION_MADE 0x8000000C
-#define STATUS_PARTIAL_COPY 0x8000000D
-#define STATUS_DEVICE_PAPER_EMPTY 0x8000000E
-#define STATUS_DEVICE_POWERED_OFF 0x8000000F
-#define STATUS_DEVICE_OFF_LINE 0x80000010
-#define STATUS_DEVICE_BUSY 0x80000011
-#define STATUS_NO_MORE_EAS 0x80000012
-#define STATUS_INVALID_EA_NAME 0x80000013
-#define STATUS_EA_LIST_INCONSISTENT 0x80000014
-#define STATUS_INVALID_EA_FLAG 0x80000015
-#define STATUS_VERIFY_REQUIRED 0x80000016
-#define STATUS_EXTRANEOUS_INFORMATION 0x80000017
-#define STATUS_RXACT_COMMIT_NECESSARY 0x80000018
-#define STATUS_NO_MORE_ENTRIES 0x8000001A
-#define STATUS_FILEMARK_DETECTED 0x8000001B
-#define STATUS_MEDIA_CHANGED 0x8000001C
-#define STATUS_BUS_RESET 0x8000001D
-#define STATUS_END_OF_MEDIA 0x8000001E
-#define STATUS_BEGINNING_OF_MEDIA 0x8000001F
-#define STATUS_MEDIA_CHECK 0x80000020
-#define STATUS_SETMARK_DETECTED 0x80000021
-#define STATUS_NO_DATA_DETECTED 0x80000022
-#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES 0x80000023
-#define STATUS_SERVER_HAS_OPEN_HANDLES 0x80000024
-#define STATUS_ALREADY_DISCONNECTED 0x80000025
-#define STATUS_LONGJUMP 0x80000026
-
-#define STATUS_UNSUCCESSFUL 0xC0000001
-#define STATUS_NOT_IMPLEMENTED 0xC0000002
-#define STATUS_INVALID_INFO_CLASS 0xC0000003
-#define STATUS_INFO_LENGTH_MISMATCH 0xC0000004
-#define STATUS_ACCESS_VIOLATION 0xC0000005
-#define STATUS_IN_PAGE_ERROR 0xC0000006
-#define STATUS_PAGEFILE_QUOTA 0xC0000007
-#define STATUS_INVALID_HANDLE 0xC0000008
-#define STATUS_BAD_INITIAL_STACK 0xC0000009
-#define STATUS_BAD_INITIAL_PC 0xC000000A
-#define STATUS_INVALID_CID 0xC000000B
-#define STATUS_TIMER_NOT_CANCELED 0xC000000C
-#define STATUS_INVALID_PARAMETER 0xC000000D
-#define STATUS_NO_SUCH_DEVICE 0xC000000E
-#define STATUS_NO_SUCH_FILE 0xC000000F
-#define STATUS_INVALID_DEVICE_REQUEST 0xC0000010
-#define STATUS_END_OF_FILE 0xC0000011
-#define STATUS_WRONG_VOLUME 0xC0000012
-#define STATUS_NO_MEDIA_IN_DEVICE 0xC0000013
-#define STATUS_UNRECOGNIZED_MEDIA 0xC0000014
-#define STATUS_NONEXISTENT_SECTOR 0xC0000015
-#define STATUS_MORE_PROCESSING_REQUIRED 0xC0000016
-#define STATUS_NO_MEMORY 0xC0000017
-#define STATUS_CONFLICTING_ADDRESSES 0xC0000018
-#define STATUS_NOT_MAPPED_VIEW 0xC0000019
-#define STATUS_UNABLE_TO_FREE_VM 0xC000001A
-#define STATUS_UNABLE_TO_DELETE_SECTION 0xC000001B
-#define STATUS_INVALID_SYSTEM_SERVICE 0xC000001C
-#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
-#define STATUS_INVALID_LOCK_SEQUENCE 0xC000001E
-#define STATUS_INVALID_VIEW_SIZE 0xC000001F
-#define STATUS_INVALID_FILE_FOR_SECTION 0xC0000020
-#define STATUS_ALREADY_COMMITTED 0xC0000021
-#define STATUS_ACCESS_DENIED 0xC0000022
-#define STATUS_BUFFER_TOO_SMALL 0xC0000023
-#define STATUS_OBJECT_TYPE_MISMATCH 0xC0000024
-#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
-#define STATUS_INVALID_DISPOSITION 0xC0000026
-#define STATUS_UNWIND 0xC0000027
-#define STATUS_BAD_STACK 0xC0000028
-#define STATUS_INVALID_UNWIND_TARGET 0xC0000029
-#define STATUS_NOT_LOCKED 0xC000002A
-#define STATUS_PARITY_ERROR 0xC000002B
-#define STATUS_UNABLE_TO_DECOMMIT_VM 0xC000002C
-#define STATUS_NOT_COMMITTED 0xC000002D
-#define STATUS_INVALID_PORT_ATTRIBUTES 0xC000002E
-#define STATUS_PORT_MESSAGE_TOO_LONG 0xC000002F
-#define STATUS_INVALID_PARAMETER_MIX 0xC0000030
-#define STATUS_INVALID_QUOTA_LOWER 0xC0000031
-#define STATUS_DISK_CORRUPT_ERROR 0xC0000032
-#define STATUS_OBJECT_NAME_INVALID 0xC0000033
-#define STATUS_OBJECT_NAME_NOT_FOUND 0xC0000034
-#define STATUS_OBJECT_NAME_COLLISION 0xC0000035
-#define STATUS_PORT_DISCONNECTED 0xC0000037
-#define STATUS_DEVICE_ALREADY_ATTACHED 0xC0000038
-#define STATUS_OBJECT_PATH_INVALID 0xC0000039
-#define STATUS_OBJECT_PATH_NOT_FOUND 0xC000003A
-#define STATUS_PATH_SYNTAX_BAD 0xC000003B
-#define STATUS_DATA_OVERRUN 0xC000003C
-#define STATUS_DATA_LATE_ERROR 0xC000003D
-#define STATUS_DATA_ERROR 0xC000003E
-#define STATUS_CRC_ERROR 0xC000003F
-#define STATUS_SECTION_TOO_BIG 0xC0000040
-#define STATUS_PORT_CONNECTION_REFUSED 0xC0000041
-#define STATUS_INVALID_PORT_HANDLE 0xC0000042
-#define STATUS_SHARING_VIOLATION 0xC0000043
-#define STATUS_QUOTA_EXCEEDED 0xC0000044
-#define STATUS_INVALID_PAGE_PROTECTION 0xC0000045
-#define STATUS_MUTANT_NOT_OWNED 0xC0000046
-#define STATUS_SEMAPHORE_LIMIT_EXCEEDED 0xC0000047
-#define STATUS_PORT_ALREADY_SET 0xC0000048
-#define STATUS_SUSPEND_COUNT_EXCEEDED 0xC000004A
-#define STATUS_LOCK_NOT_GRANTED 0xC0000054 /* FIXME: not sure */
-#define STATUS_FILE_LOCK_CONFLICT 0xC0000055 /* FIXME: not sure */
-#define STATUS_UNKNOWN_REVISION 0xC0000058
-#define STATUS_INVALID_SECURITY_DESCR 0xC0000079
-#define STATUS_DISK_FULL 0xC000007F
-#define STATUS_SECTION_NOT_EXTENDED 0xC0000087
-#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
-#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
-#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
-#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
-#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
-#define STATUS_FLOAT_OVERFLOW 0xC0000091
-#define STATUS_FLOAT_STACK_CHECK 0xC0000092
-#define STATUS_FLOAT_UNDERFLOW 0xC0000093
-#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
-#define STATUS_INTEGER_OVERFLOW 0xC0000095
-#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
-#define STATUS_MEDIA_WRITE_PROTECTED 0XC00000A2
-#define STATUS_INVALID_PARAMETER_2 0xC00000F0
-#define STATUS_STACK_OVERFLOW 0xC00000FD
-#define STATUS_DIRECTORY_NOT_EMPTY 0xC0000101
-#define STATUS_TOO_MANY_OPENED_FILES 0xC000011F
-#define STATUS_CONTROL_C_EXIT 0xC000013A
-#define STATUS_PIPE_BROKEN 0xC000014B
-#define STATUS_NOT_REGISTRY_FILE 0xC000015C
-#define STATUS_PARTITION_FAILURE 0xC0000172
-#define STATUS_INVALID_BLOCK_LENGTH 0xC0000173
-#define STATUS_DEVICE_NOT_PARTITIONED 0xC0000174
-#define STATUS_UNABLE_TO_LOCK_MEDIA 0xC0000175
-#define STATUS_UNABLE_TO_UNLOAD_MEDIA 0xC0000176
-#define STATUS_EOM_OVERFLOW 0xC0000177
-#define STATUS_NO_MEDIA 0xC0000178
-#define STATUS_NO_SUCH_MEMBER 0xC000017A
-#define STATUS_INVALID_MEMBER 0xC000017B
-#define STATUS_KEY_DELETED 0xC000017C
-#define STATUS_NO_LOG_SPACE 0xC000017D
-#define STATUS_TOO_MANY_SIDS 0xC000017E
-#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED 0xC000017F
-#define STATUS_KEY_HAS_CHILDREN 0xC0000180
-#define STATUS_CHILD_MUST_BE_VOLATILE 0xC0000181
-#define STATUS_DEVICE_CONFIGURATION_ERROR0xC0000182
-#define STATUS_DRIVER_INTERNAL_ERROR 0xC0000183
-#define STATUS_INVALID_DEVICE_STATE 0xC0000184
-#define STATUS_IO_DEVICE_ERROR 0xC0000185
-#define STATUS_DEVICE_PROTOCOL_ERROR 0xC0000186
-#define STATUS_BACKUP_CONTROLLER 0xC0000187
-#define STATUS_LOG_FILE_FULL 0xC0000188
-#define STATUS_TOO_LATE 0xC0000189
-#define STATUS_NO_TRUST_LSA_SECRET 0xC000018A
-#define STATUS_NO_TRUST_SAM_ACCOUNT 0xC000018B
-#define STATUS_TRUSTED_DOMAIN_FAILURE 0xC000018C
-#define STATUS_TRUSTED_RELATIONSHIP_FAILURE 0xC000018D
-#define STATUS_EVENTLOG_FILE_CORRUPT 0xC000018E
-#define STATUS_EVENTLOG_CANT_START 0xC000018F
-#define STATUS_TRUST_FAILURE 0xC0000190
-#define STATUS_MUTANT_LIMIT_EXCEEDED 0xC0000191
-#define STATUS_NETLOGON_NOT_STARTED 0xC0000192
-#define STATUS_ACCOUNT_EXPIRED 0xC0000193
-#define STATUS_POSSIBLE_DEADLOCK 0xC0000194
-#define STATUS_NETWORK_CREDENTIAL_CONFLICT 0xC0000195
-#define STATUS_REMOTE_SESSION_LIMIT 0xC0000196
-#define STATUS_EVENTLOG_FILE_CHANGED 0xC0000197
-#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 0xC0000198
-#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT 0xC0000199
-#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT 0xC000019A
-#define STATUS_DOMAIN_TRUST_INCONSISTENT 0xC000019B
-#define STATUS_FS_DRIVER_REQUIRED 0xC000019C
-
-#define STATUS_RESOURCE_LANG_NOT_FOUND 0xC0000204
-
-#define MAXIMUM_WAIT_OBJECTS 64
-#define MAXIMUM_SUSPEND_COUNT 127
-
-
-/*
- * Return values from the actual exception handlers
- */
-
-#define ExceptionContinueExecution 0
-#define ExceptionContinueSearch 1
-#define ExceptionNestedException 2
-#define ExceptionCollidedUnwind 3
-
-/*
- * Return values from filters in except() and from UnhandledExceptionFilter
- */
-
-#define EXCEPTION_EXECUTE_HANDLER 1
-#define EXCEPTION_CONTINUE_SEARCH 0
-#define EXCEPTION_CONTINUE_EXECUTION -1
-
-/*
- * From OS/2 2.0 exception handling
- * Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD
- */
-
-#define EH_NONCONTINUABLE 0x01
-#define EH_UNWINDING 0x02
-#define EH_EXIT_UNWIND 0x04
-#define EH_STACK_INVALID 0x08
-#define EH_NESTED_CALL 0x10
-
-#define EXCEPTION_CONTINUABLE 0
-#define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE
-
-/*
- * The exception record used by Win32 to give additional information
- * about exception to exception handlers.
- */
-
-#define EXCEPTION_MAXIMUM_PARAMETERS 15
-
-typedef struct EXCEPTION_RECORD
-{
- DWORD ExceptionCode;
- DWORD ExceptionFlags;
- struct EXCEPTION_RECORD *ExceptionRecord;
-
- LPVOID ExceptionAddress;
- DWORD NumberParameters;
- DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
-} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
-
-/*
- * The exception pointers structure passed to exception filters
- * in except() and the UnhandledExceptionFilter().
- */
-
-typedef struct EXCEPTION_POINTERS
-{
- PEXCEPTION_RECORD ExceptionRecord;
- PCONTEXT ContextRecord;
-} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
-
-
-/*
- * The exception frame, used for registering exception handlers
- * Win32 cares only about this, but compilers generally emit
- * larger exception frames for their own use.
- */
-
-struct EXCEPTION_FRAME;
-
-typedef DWORD (*PEXCEPTION_HANDLER)(PEXCEPTION_RECORD, struct EXCEPTION_FRAME*,
- PCONTEXT, struct EXCEPTION_FRAME **);
-
-typedef struct EXCEPTION_FRAME
-{
- struct EXCEPTION_FRAME *Prev;
- PEXCEPTION_HANDLER Handler;
-} EXCEPTION_FRAME, *PEXCEPTION_FRAME;
-
-#include "poppack.h"
-
-/*
- * function pointer to a exception filter
- */
-
-typedef LONG CALLBACK (*PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
-typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
-
-DWORD WINAPI UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers );
-LPTOP_LEVEL_EXCEPTION_FILTER
-WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
-
-/* status values for ContinueDebugEvent */
-#define DBG_CONTINUE 0x00010002
-#define DBG_TERMINATE_THREAD 0x40010003
-#define DBG_TERMINATE_PROCESS 0x40010004
-#define DBG_CONTROL_C 0x40010005
-#define DBG_CONTROL_BREAK 0x40010008
-#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
-
-typedef struct NT_TIB
-{
- struct EXCEPTION_REGISTRATION_RECORD *ExceptionList;
- PVOID StackBase;
- PVOID StackLimit;
- PVOID SubSystemTib;
- union {
- PVOID FiberData;
- DWORD Version;
- } DUMMYUNIONNAME;
- PVOID ArbitraryUserPointer;
- struct NT_TIB *Self;
-} NT_TIB, *PNT_TIB;
-
-struct TEB;
-/*
-#if ARCH_X86_32 && defined(__GNUC__)
-inline struct TEB * WINAPI NtCurrentTeb(void);
-inline struct TEB * WINAPI NtCurrentTeb(void)
-{
- struct TEB *teb;
- __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb));
- return teb;
-}
-#else
-struct TEB * WINAPI NtCurrentTeb(void);
-#endif
-*/
-
-/*
- * File formats definitions
- */
-
-typedef struct IMAGE_DOS_HEADER {
- WORD e_magic; /* 00: MZ Header signature */
- WORD e_cblp;