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
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
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