uint64_t setFlags, Fault _fault, uint8_t _cc);
std::string generateDisassembly(Addr pc,
- const SymbolTable *symtab) const;
+ const Loader::SymbolTable *symtab) const override;
};
class MicroHalt : public X86ISA::X86MicroopBase
{
}
- Fault execute(ExecContext *, Trace::InstRecord *) const;
+ Fault execute(ExecContext *, Trace::InstRecord *) const override;
std::string generateDisassembly(Addr pc,
- const SymbolTable *symtab) const;
+ const Loader::SymbolTable *symtab) const override;
};
}};
def template MicroFaultDeclare {{
class %(class_name)s : public %(base_class)s
{
+ private:
+ %(reg_idx_arr_decl)s;
+
public:
%(class_name)s(ExtMachInst _machInst, const char * instMnem,
uint64_t setFlags, Fault _fault, uint8_t _cc);
- Fault execute(ExecContext *, Trace::InstRecord *) const;
+ Fault execute(ExecContext *, Trace::InstRecord *) const override;
};
}};
Fault _fault, uint8_t _cc) :
%(base_class)s(machInst, instMnem, setFlags, _fault, _cc)
{
+ %(set_reg_idx_arr)s;
%(constructor)s;
}
}};
output decoder {{
- std::string MicroFaultBase::generateDisassembly(Addr pc,
- const SymbolTable *symtab) const
+ std::string
+ MicroFaultBase::generateDisassembly(
+ Addr pc, const Loader::SymbolTable *symtab) const
{
std::stringstream response;
return response.str();
}
- std::string MicroHalt::generateDisassembly(Addr pc,
- const SymbolTable *symtab) const
+ std::string
+ MicroHalt::generateDisassembly(
+ Addr pc, const Loader::SymbolTable *symtab) const
{
std::stringstream response;
self.fault = fault
if flags:
if not isinstance(flags, (list, tuple)):
- raise Exception, "flags must be a list or tuple of flags"
+ raise Exception("flags must be a list or tuple of flags")
self.cond = " | ".join(flags)
self.className += "Flags"
else:
def template MicroFenceOpDeclare {{
class %(class_name)s : public X86ISA::X86MicroopBase
{
+ private:
+ %(reg_idx_arr_decl)s;
+
public:
%(class_name)s(ExtMachInst _machInst,
const char * instMnem,
uint64_t setFlags);
- Fault execute(ExecContext *, Trace::InstRecord *) const;
+ Fault execute(ExecContext *, Trace::InstRecord *) const override;
};
}};
%(base_class)s(machInst, "%(mnemonic)s", instMnem,
setFlags, %(op_class)s)
{
+ %(set_reg_idx_arr)s;
%(constructor)s;
}
}};
def __init__(self):
self.className = "Mfence"
self.mnemonic = "mfence"
- self.instFlags = "| (1ULL << StaticInst::IsMemBarrier)"
+ self.instFlags = "| (1ULL << StaticInst::IsReadBarrier)" + \
+ "| (1ULL << StaticInst::IsWriteBarrier)"
def getAllocator(self, microFlags):
allocString = '''