40 #ifndef __ARCH_X86_TYPES_HH__ 41 #define __ARCH_X86_TYPES_HH__ 157 static inline const char *
167 case ThreeByte0F38Opcode:
168 return "three byte 0f38";
169 case ThreeByte0F3AOpcode:
170 return "three byte 0f3a";
172 return "unrecognized!";
203 memset(static_cast<void *>(
this), 0,
sizeof(*
this));
238 inline static std::ostream &
241 ccprintf(os,
"\n{\n\tleg = %#x,\n\trex = %#x,\n\t" 243 "op = {\n\t\ttype = %s,\n\t\top = %#x,\n\t\t},\n\t" 244 "modRM = %#x,\n\tsib = %#x,\n\t" 245 "immediate = %#x,\n\tdisplacement = %#x\n\t" 250 (uint8_t)emi.
modRM, (uint8_t)emi.
sib,
314 uint8_t
size()
const {
return _size; }
315 void size(uint8_t newSize) { _size = newSize; }
320 return (this->npc() != this->
pc() + size()) ||
321 (this->nupc() != this->upc() + 1);
359 return (((uint64_t)emi.
legacy << 48) |
360 ((uint64_t)emi.
rex << 40) |
361 ((uint64_t)emi.
vex << 32) |
362 ((uint64_t)emi.
modRM << 24) |
363 ((uint64_t)emi.
sib << 16) |
385 #endif // __ARCH_X86_TYPES_HH__ void paramIn(CheckpointIn &cp, const std::string &name, X86ISA::ExtMachInst &machInst)
BitUnion8(LegacyPrefixVector) Bitfield< 7
void ccprintf(cp::Print &print)
const std::string & name()
struct X86ISA::ExtMachInst::@24 opcode
EndBitUnion(TriggerIntMessage) namespace DeliveryMode
size_t operator()(const X86ISA::ExtMachInst &emi) const
Overload hash function for BasicBlockRange type.
static std::ostream & operator<<(std::ostream &os, const ExtMachInst &emi)
#define UNSERIALIZE_SCALAR(scalar)
static bool operator==(const ExtMachInst &emi1, const ExtMachInst &emi2)
void serialize(CheckpointOut &cp) const
Serialize an object.
LegacyPrefixVector legacy
void unserialize(CheckpointIn &cp)
Unserialize an object.
void serialize(const ThreadContext &tc, CheckpointOut &cp)
Thread context serialization helpers.
void paramOut(CheckpointOut &cp, const std::string &name, const X86ISA::ExtMachInst &machInst)
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
#define SERIALIZE_SCALAR(scalar)
static const char * opcodeTypeToStr(OpcodeType type)
std::ostream CheckpointOut
This is exposed globally, independent of the ISA.
void size(uint8_t newSize)
void unserialize(ThreadContext &tc, CheckpointIn &cp)
int Opcode(MachInst inst)
GenericISA::UPCState< MachInst > Base