50 bool foundPsr =
false;
78 bool foundPsr =
false;
90 if (
bits(byteMask, 1, 0)) {
104 if (
bits(byteMask, 3)) {
111 if (
bits(byteMask, 2)) {
118 if (
bits(byteMask, 1)) {
121 if (
bits(byteMask, 0)) {
129 std::stringstream
ss;
138 std::stringstream
ss;
148 std::stringstream
ss;
161 std::stringstream
ss;
174 std::stringstream
ss;
183 std::stringstream
ss;
193 std::stringstream
ss;
204 std::stringstream
ss;
214 std::stringstream
ss;
229 std::stringstream
ss;
245 std::stringstream
ss;
259 std::stringstream
ss;
272 std::stringstream
ss;
284 std::stringstream
ss;
296 std::stringstream
ss;
299 ccprintf(ss,
", #%d, #%d", imm1, imm2);
307 std::stringstream
ss;
312 ccprintf(ss,
", #%d, #%d", imm1, imm2);
320 std::stringstream
ss;
332 std::stringstream
ss;
352 flags[IsNonSpeculative] =
true;
363 return std::make_shared<HypervisorTrap>(
machInst,
iss,
389 return std::make_shared<HypervisorTrap>(
machInst,
iss,
392 return std::make_shared<UndefinedInstruction>(
machInst,
false,
bool mcrMrc15TrapToHyp(const MiscRegIndex miscReg, ThreadContext *tc, uint32_t iss, ExceptionClass *ec)
void ccprintf(cp::Print &print)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void printMnemonic(std::ostream &os, const std::string &suffix="", bool withPred=true, bool withCond64=false, ConditionCode cond64=COND_UC) const
int8_t numSrcRegs() const
Number of source registers.
decltype(nullptr) constexpr NoFault
bool isMiscReg() const
true if it is a condition-code physical register.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
int8_t numDestRegs() const
Number of destination registers.
void printMsrBase(std::ostream &os) const
const char * mnemonic
Base mnemonic (e.g., "add").
const RegId & srcRegIdx(int i) const
Return logical index (architectural reg num) of i'th source reg.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
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)
McrMrcImplDefined(const char *_mnemonic, ExtMachInst _machInst, uint64_t _iss, MiscRegIndex _miscReg)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int)...
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void printShiftOperand(std::ostream &os, IntRegIndex rm, bool immShift, uint32_t shiftAmt, IntRegIndex rs, ArmShiftType type) const
virtual ThreadContext * tcBase() const =0
Returns a pointer to the ThreadContext.
std::string generateDisassembly(Addr pc, const Loader::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 generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void printMiscReg(std::ostream &os, RegIndex reg_idx) const
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
McrMrcMiscInst(const char *_mnemonic, ExtMachInst _machInst, uint64_t _iss, MiscRegIndex _miscReg)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
const RegIndex & index() const
Index accessors.
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
const RegId & destRegIdx(int i) const
Return logical index (architectural reg num) of i'th destination reg.
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Register ID: describe an architectural register with its class and index.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it...
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::shared_ptr< FaultBase > Fault
MachInst encoding() const
Returns the real encoding of the instruction: the machInst field is in fact always 64 bit wide and co...
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.