#include "atomic-cl-32.hpp" namespace factor { #define ESP Esp #define EIP Eip typedef struct DECLSPEC_ALIGN(16) _M128A { ULONGLONG Low; LONGLONG High; } M128A, *PM128A; /* The ExtendedRegisters field of the x86.32 CONTEXT structure uses this layout; however, * this structure is only made available from winnt.h on x86.64 */ typedef struct _XMM_SAVE_AREA32 { WORD ControlWord; /* 000 */ WORD StatusWord; /* 002 */ BYTE TagWord; /* 004 */ BYTE Reserved1; /* 005 */ WORD ErrorOpcode; /* 006 */ DWORD ErrorOffset; /* 008 */ WORD ErrorSelector; /* 00c */ WORD Reserved2; /* 00e */ DWORD DataOffset; /* 010 */ WORD DataSelector; /* 014 */ WORD Reserved3; /* 016 */ DWORD MxCsr; /* 018 */ DWORD MxCsr_Mask; /* 01c */ M128A FloatRegisters[8]; /* 020 */ M128A XmmRegisters[16]; /* 0a0 */ BYTE Reserved4[96]; /* 1a0 */ } XMM_SAVE_AREA32, *PXMM_SAVE_AREA32; #define X87SW(ctx) (ctx)->FloatSave.StatusWord #define MXCSR(ctx) ((XMM_SAVE_AREA32*)((ctx)->ExtendedRegisters))->MxCsr }