38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			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
 | 
						|
 | 
						|
}
 |