mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
2.1 KiB
128 lines
2.1 KiB
#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 */
|