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