From: Steven Edwards (steven_ed4153_at_yahoo.com)
Date: Sun Jul 03 2005 - 00:28:36 CDT
Hi, I wrote this quite a while back on sourceforge's compile farm when I was attempting to learn asm for x86 and x86-64. After a short amount of time dealing with the pain of transfering files in and out of sourceforge and keeping CVS updated I gave up but before this gets perged I wanted to send it. I hope it is of use to someone as due to my lack of a x86-64 system it might be a while before I get back to it. To correct this minor oversight, please contact AMD and kindly request they donate me a system. Thanks Steven Changelog: Add CONTEXT Definitions for AMD x86-64. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com Index: include/winnt.h =================================================================== RCS file: /home/wine/wine/include/winnt.h,v retrieving revision 1.214 diff -u -r1.214 winnt.h --- include/winnt.h 27 Jun 2005 11:09:42 -0000 1.214 +++ include/winnt.h 3 Jul 2005 05:20:26 -0000 @@ -451,6 +451,7 @@ #define PROCESSOR_ARCHITECTURE_PPC 3 #define PROCESSOR_ARCHITECTURE_SHX 4 #define PROCESSOR_ARCHITECTURE_ARM 5 +#define PROCESSOR_ARCHITECTURE_AMD64 9 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF /* dwProcessorType */ @@ -705,6 +706,143 @@ } Bits; } HighWord; } LDT_ENTRY, *PLDT_ENTRY; + +#ifdef _M_AMD64 + +#define CONTEXT_AMD64 0x100000 + +#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L ) +#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L ) +#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L ) +#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) + +#define CONTEXT_FULL ( CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT ) +#define CONTEXT_ALL ( CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) + +/* 128 Bit 16 byte xmm regster */ + +typedef struct _M128 { + ULONGLONG Low; + LONGLONG High; +} M128; + +/* Legacy Floating Point State */ + +typedef struct _LEGACY_SAVE_AREA { + WORD ControlWord; + WORD Reserved0; + WORD StatusWord; + WORD Reserverd1; + WORD TagWord; + WORD Reserved2; + DWORD ErrorOffset; + WORD ErrorSelector; + WORD ErrorOpcode; + DWORD DataOffset; + WORD DataSelector; + WORD Reserved3; + BYTE FloatRegistrers[8 * 10]; +} LEGACY_SAVE_AREA, *PLEGACY_SAVE_AREA; + +#define LEGACY_SAVE_AREA_LENGTH ((sizeof(LEGACY_SAVE_AREA) + 15) & ~15) + +/* Context Frame */ + +typedef struct _CONTEXT { + /* Register Param Home Addr */ + + DWORD64 P1Home; + DWORD64 P2Home; + DWORD64 P3Home; + DWORD64 P4Home; + DWORD64 P5Home; + DWORD64 P6Home; + + /* Control Flags */ + + DWORD ContextFlags; + DWORD MxCsr; + + /* Segment Regs and Procs Flags */ + + WORD SegCs; + WORD SegDs; + WORD SegEs; + WORD SegFs; + WORD SegGs; + WORD SegSs; + DWORD EFlags; + + /* Debug Regs */ + DWORD64 Dr0; + DWORD64 Dr1; + DWORD64 Dr2; + DWORD64 Dr3; + DWORD64 Dr6; + DWORD64 Dr7; + + /* Intger Regs */ + + DWORD64 Rax; + DWORD64 Rcx; + DWORD64 Rdx; + DWORD64 Rbx; + DWORD64 Rsp; + DWORD64 Rbp; + DWORD64 Rsi; + DWORD64 Rdi; +/* + DWORD64 R8; + DWORD64 R9; + DWORD64 R10; + DWORD64 R11; + DWORD64 R12; + DWORD64 R13; + DWORD64 R14; + DWORD64 R15; +*/ + /* Program Counter */ + + DWORD64 Rip; + + /* MMX and Floating point state. */ + + M128 Xmm0; + M128 Xmm1; + M128 Xmm2; + M128 Xmm3; + M128 Xmm4; + M128 Xmm5; + M128 Xmm6; + M128 Xmm7; + M128 Xmm8; + M128 Xmm9; + M128 Xmm10; + M128 Xmm11; + M128 Xmm12; + M128 Xmm13; + M128 Xmm14; + M128 Xmm15; + + /* Legacy floating point state */ + + LEGACY_SAVE_AREA FltSave; + DWORD Fill; + + /* Special Debug Control Regs */ + + DWORD64 DebugControl; + DWORD64 LastBranchToRip; + DWORD64 LastBranchFromRip; + DWORD64 LastExceptionToRip; + DWORD64 LastExceptionFromRip; + DWORD64 Fill1; + +} CONTEXT; + +#endif /* __x86_64__ */ + /* Alpha context definitions */ #if defined(_ALPHA_) || defined(__ALPHA__) || defined(__alpha__)
This archive was generated by hypermail 2.1.4 : Sun Jul 03 2005 - 00:29:00 CDT