From cd3fee1b81ad3c33733ed55e20d00464cdf791f5 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 14 Jun 2007 13:50:58 +0000 Subject: Put the mode in the ExtMachInst. --HG-- extra : convert_revision : 7fc6567ab3d35c06901e6c8a0435f7cab819e17e --- src/arch/x86/types.hh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/arch/x86/types.hh') diff --git a/src/arch/x86/types.hh b/src/arch/x86/types.hh index 225258358..fc9f1d82b 100644 --- a/src/arch/x86/types.hh +++ b/src/arch/x86/types.hh @@ -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) -- cgit v1.2.3