62 const Addr pc(pc_state.instAddr());
67 return std::make_shared<PCAlignmentFault>(
pc);
71 return std::make_shared<PrefetchAbort>(
72 pc, ArmFault::AlignmentFault);
76 panic(
"Internal error in instruction decoder\n");
79 panic(
"Decoder fault instruction without decoder fault.\n");
82 panic(
"Unhandled fault type");
93 return "UnalignedInstruction";
96 return "DecoderPanic";
99 panic(
"Unhandled fault type");
116 flags[IsNonSpeculative] =
true;
121 const std::string& _fullMnemonic)
127 flags[IsNonSpeculative] =
true;
139 return csprintf(
"%-10s (unimplemented)",
147 :
ArmStaticInst(_mnemonic, _machInst, No_OpClass), warned(false)
151 flags[IsNonSpeculative] =
true;
156 const std::string& _fullMnemonic)
162 flags[IsNonSpeculative] =
true;
169 warn(
"\tinstruction '%s' unimplemented\n",
180 return csprintf(
"%-10s (unimplemented)",
191 return std::make_shared<IllegalInstSetStateFault>();
#define panic(...)
This implements a cprintf based panic() function.
decltype(nullptr) constexpr NoFault
IllegalExecInst(ExtMachInst _machInst)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const override
Internal function to generate disassembly string.
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
WarnUnimplemented(const char *_mnemonic, ExtMachInst _machInst)
const char * mnemonic
Base mnemonic (e.g., "add").
virtual PCState pcState() const =0
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
FailUnimplemented(const char *_mnemonic, ExtMachInst _machInst)
bool warned
Have we warned on this instruction yet?
const ExtMachInst machInst
The binary machine instruction.
std::bitset< Num_Flags > flags
Flag values for this instruction.
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
std::string csprintf(const char *format, const Args &...args)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const override
Internal function to generate disassembly string.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::string fullMnemonic
Full mnemonic for MRC and MCR instructions including the coproc.
DecoderFaultInst(ExtMachInst _machInst)
const char * faultName() const
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const
GenericISA::SimplePCState< MachInst > PCState
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string fullMnemonic
Full mnemonic for MRC and MCR instructions including the coproc.
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
Unaligned instruction fault.
std::shared_ptr< FaultBase > Fault
DecoderFault
Instruction decoder fault codes in ExtMachInst.