#ifndef _Pigger_c_h
#define _Pigger_c_h
#define ValidEAX (3)
#define ValidEBX (7)
#define ValidECX (15)
#define ValidEDX (11)
#define ValidEBP (13)
#define ValidESP (15)
#define ValidESI (17)
#define ValidEDI (19)
#define PigSynchNULL ((struct PigSynchREC*)0)
#define PigHashTableShift (12)
#define PigHashTableSize (4096)
#define PigHashTableMask (4095)
enum PigValidItems
{
ValidAL = 0,
ValidAH = 1,
ValidEAX_MS16 = 2,
ValidBL = 3,
ValidBH = 4,
ValidEBX_MS16 = 5,
ValidCL = 6,
ValidCH = 7,
ValidECX_MS16 = 8,
ValidDL = 9,
ValidDH = 10,
ValidEDX_MS16 = 11,
ValidBP = 12,
ValidEBP_MS16 = 13,
ValidSP = 14,
ValidESP_MS16 = 15,
ValidSI = 16,
ValidESI_MS16 = 17,
ValidDI = 18,
ValidEDI_MS16 = 19,
ValidDS = 20,
ValidES = 21,
ValidFS = 22,
ValidGS = 23,
ValidCF = 24,
ValidPF = 25,
ValidAF = 26,
ValidZF = 27,
ValidSF = 28,
ValidOF = 29
};
struct PigSynchREC
{
IU32 linearAddress;
void *hostAddress;
void *hostDestination;
IU32 trueCode0;
IU32 trueCode1;
IU32 validRegAndFlags;
struct PigSyncREC *nextList;
struct PigSyncREC *prevList;
struct PigSyncREC *deleteList;
};
struct CpuRegsREC
{
IU32 CR0;
IU32 PFLA;
IU32 PDBR;
IU8 CPL;
IU32 EIP;
IU32 EAX;
IU32 EBX;
IU32 ECX;
IU32 EDX;
IU32 ESP;
IU32 EBP;
IU32 ESI;
IU32 EDI;
IU32 EFLAGS;
IU32 GDT_base;
IU16 GDT_limit;
IU32 IDT_base;
IU16 IDT_limit;
IU32 LDT_base;
IU32 LDT_limit;
IU16 LDT_selector;
IU32 TR_base;
IU32 TR_limit;
IU16 TR_ar;
IU16 TR_selector;
IU32 DS_base;
IU32 DS_limit;
IU16 DS_ar;
IU16 DS_selector;
IU32 ES_base;
IU32 ES_limit;
IU16 ES_ar;
IU16 ES_selector;
IU32 SS_base;
IU32 SS_limit;
IU16 SS_ar;
IU16 SS_selector;
IU32 CS_base;
IU32 CS_limit;
IU16 CS_ar;
IU16 CS_selector;
IU32 FS_base;
IU32 FS_limit;
IU16 FS_ar;
IU16 FS_selector;
IU32 GS_base;
IU32 GS_limit;
IU16 GS_ar;
IU16 GS_selector;
};
struct NpxRegsREC
{
IU32 NPX_control;
IU32 NPX_status;
IU32 NPX_tagword;
struct FPSTACKENTRY NPX_ST[8];
};
struct CpuStateREC
{
struct CpuRegsREC cpu_regs;
IU32 video_latches;
IBOOL twenty_bit_wrap;
IBOOL NPX_valid;
struct NpxRegsREC NPX_regs;
IUH synch_index;
};
#endif /* ! _Pigger_c_h */