7 typedef struct DECLSPEC_ALIGN(16) _M128A {
12 /* The ExtendedRegisters field of the x86.32 CONTEXT structure uses this layout; however,
13 * this structure is only made available from winnt.h on x86.64 */
14 typedef struct _XMM_SAVE_AREA32 {
15 WORD ControlWord; /* 000 */
16 WORD StatusWord; /* 002 */
17 BYTE TagWord; /* 004 */
18 BYTE Reserved1; /* 005 */
19 WORD ErrorOpcode; /* 006 */
20 DWORD ErrorOffset; /* 008 */
21 WORD ErrorSelector; /* 00c */
22 WORD Reserved2; /* 00e */
23 DWORD DataOffset; /* 010 */
24 WORD DataSelector; /* 014 */
25 WORD Reserved3; /* 016 */
26 DWORD MxCsr; /* 018 */
27 DWORD MxCsr_Mask; /* 01c */
28 M128A FloatRegisters[8]; /* 020 */
29 M128A XmmRegisters[16]; /* 0a0 */
30 BYTE Reserved4[96]; /* 1a0 */
31 } XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
33 #define X87SW(ctx) (ctx)->FloatSave.StatusWord
34 #define MXCSR(ctx) ((XMM_SAVE_AREA32*)((ctx)->ExtendedRegisters))->MxCsr