2 * context.h: Processor-specific register contexts
5 * Dick Porter (dick@ximian.com)
7 * (C) 2002 Ximian, Inc.
10 #ifndef _WAPI_CONTEXT_H_
11 #define _WAPI_CONTEXT_H_
15 #include "mono/io-layer/wapi.h"
17 /* This part is x86-specific. MSDN states that CONTEXT is defined
18 * also for MIPS, Alpha and PPC processors.
21 #define SIZE_OF_80387_REGISTERS 80
23 #define CONTEXT_i386 0x00010000
24 #define CONTEXT_i486 0x00010000
26 #define CONTEXT_CONTROL (CONTEXT_i386 | 0x00000001L)
27 #define CONTEXT_INTEGER (CONTEXT_i386 | 0x00000002L)
28 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x00000004L)
29 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x00000008L)
30 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L)
31 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | 0x00000020L)
33 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
35 #define MAXIMUM_SUPPORTED_EXTENSION 512
43 guint32 ErrorSelector
;
46 guint8 RegisterArea
[SIZE_OF_80387_REGISTERS
];
48 } WapiFloatingSaveArea
;
60 WapiFloatingSaveArea FloatSave
;
81 guint8 ExtendedRegisters
[MAXIMUM_SUPPORTED_EXTENSION
];
86 extern gboolean
GetThreadContext(gpointer handle
, WapiContext
*context
);
90 #endif /* _WAPI_COMPEX_H_ */