factor/vm/os-windows.32.hpp

38 lines
1.0 KiB
C++

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