summaryrefslogtreecommitdiffstats
path: root/private/mvdm/softpc.new/host/inc/mips/prod/fm_c.h
blob: 76de0bcf8b82abb70055dfbe9056eafe59d77f35 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef _Fm_c_h
#define _Fm_c_h
#define epcNBits (10)
#define epcMask (1023)
#define DataBufferSize (4000)
#define ConstraintBitMapNULL ((struct ConstraintBitMapREC*)0)
#define CleanedNULL ((struct CleanedREC*)0)
#define EntryPointCacheNULL ((struct EntryPointCacheREC*)0)
#define FCTRL_HIDDEN_BITNUM (2)
#define FCTRL_HIDDEN_BITMASK (4)
#define FCTRL_FLAGS_SUPPRESSED_BITNUM (3)
#define FCTRL_FLAGS_SUPPRESSED_BITMASK (8)
#define FCTRL_SOFTIMM_BIT_S (7)
#define FCTRL_SOFTIMM_BIT_E (6)
#define FCTRL_SOFTIMM_BITMASK (192)
#define MAX_IHOOK_DEPTH (64)
struct ConstraintBitMapREC
{
	IU32 first32;
	IU16 hashNextUniverseNr;
	IU16 CodeSegSelector;
};
struct CleanedREC
{
	IU32 EIP;
	IU32 nextEIP;
	struct ConstraintBitMapREC constraints;
	IU8 flagsType;
};
struct EntryPointCacheREC
{
	IU32 eip;
	IU32*hostCode;
};
struct FragmentInfoREC
{
	IU32 *hostAddress;
	struct EntryPointCacheREC *copierUniv;
	struct EntryPointCacheREC *lastSetCopierUniv;
	struct ConstraintBitMapREC constraints;
	IU32 eip;
	IU8 setFt;
	IU8 setUniv;
	IU8 control;
	IU8 intelLength;
	IUH flagsType;
	IU8 *copierCleanups;
};
struct BLOCK_TO_COMPILE
{
	struct ConstraintBitMapREC constraints;
	IU32 linearAddress;
	IU32 eip;
	struct EntryPointCacheREC *univ;
	IU8 *intelPtr;
	IU16 nanoBlockNr;
	IU16 infoRecNr;
	IU8 univValid;
	IU8 intelLength;
	IU8 isEntryPoint;
	IU8 execCount;
	IU32 rwImmDsBase;
	IS16 rwImmDsSelector;
};
struct IretHookStackREC
{
	IU16 cs;
	IU32 eip;
	IUH hsp;
	IU16 line;
};
#define EmitCheckInstruction (0)
#endif /* ! _Fm_c_h */