Put the mode in the ExtMachInst.
--HG-- extra : convert_revision : 7fc6567ab3d35c06901e6c8a0435f7cab819e17e
This commit is contained in:
parent
640ab1d2e7
commit
cd3fee1b81
4 changed files with 29 additions and 2 deletions
|
@ -77,6 +77,7 @@ namespace X86ISA
|
|||
|
||||
emi.modRM = 0;
|
||||
emi.sib = 0;
|
||||
emi.mode = 0;
|
||||
}
|
||||
|
||||
void Predecoder::process()
|
||||
|
|
|
@ -176,7 +176,10 @@ namespace X86ISA
|
|||
tc(_tc), basePC(0), origPC(0), offset(0),
|
||||
outOfBytes(true), emiIsReady(false),
|
||||
state(ResetState)
|
||||
{}
|
||||
{
|
||||
emi.mode.mode = LongMode;
|
||||
emi.mode.submode = SixtyFourBitMode;
|
||||
}
|
||||
|
||||
ThreadContext * getTC()
|
||||
{
|
||||
|
|
|
@ -120,6 +120,24 @@ namespace X86ISA
|
|||
Bitfield<2,0> bottom3;
|
||||
EndBitUnion(Opcode)
|
||||
|
||||
BitUnion8(OperatingMode)
|
||||
Bitfield<3> mode;
|
||||
Bitfield<2,0> submode;
|
||||
EndBitUnion(OperatingMode)
|
||||
|
||||
enum X86Mode {
|
||||
LongMode,
|
||||
LegacyMode
|
||||
};
|
||||
|
||||
enum X86SubMode {
|
||||
SixtyFourBitMode,
|
||||
CompatabilityMode,
|
||||
ProtectedMode,
|
||||
Virtual8086Mode,
|
||||
RealMode
|
||||
};
|
||||
|
||||
//The intermediate structure the x86 predecoder returns.
|
||||
struct ExtMachInst
|
||||
{
|
||||
|
@ -151,6 +169,9 @@ namespace X86ISA
|
|||
uint8_t opSize;
|
||||
//The effective address size.
|
||||
uint8_t addrSize;
|
||||
|
||||
//Mode information
|
||||
OperatingMode mode;
|
||||
};
|
||||
|
||||
inline static std::ostream &
|
||||
|
@ -172,6 +193,8 @@ namespace X86ISA
|
|||
inline static bool
|
||||
operator == (const ExtMachInst &emi1, const ExtMachInst &emi2)
|
||||
{
|
||||
if(emi1.mode != emi2.mode)
|
||||
return false;
|
||||
if(emi1.legacy != emi2.legacy)
|
||||
return false;
|
||||
if(emi1.rex != emi2.rex)
|
||||
|
|
|
@ -79,7 +79,7 @@ namespace __hash_namespace {
|
|||
((uint64_t)emi.opcode.prefixB << 8) |
|
||||
((uint64_t)emi.opcode.op)) ^
|
||||
emi.immediate ^ emi.displacement ^
|
||||
emi.opSize;
|
||||
emi.mode ^ emi.opSize;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue