Go to the documentation of this file.
50 printIntReg(
ss, dest);
52 bool foundPsr =
false;
53 for (
unsigned i = 0;
i < numSrcRegs();
i++) {
55 if (!
reg.isMiscReg()) {
80 bool foundPsr =
false;
81 for (
unsigned i = 0;
i < numDestRegs();
i++) {
83 if (!
reg.isMiscReg()) {
92 if (
bits(byteMask, 1, 0)) {
106 if (
bits(byteMask, 3)) {
113 if (
bits(byteMask, 2)) {
120 if (
bits(byteMask, 1)) {
123 if (
bits(byteMask, 0)) {
131 std::stringstream
ss;
140 std::stringstream
ss;
143 printIntReg(
ss, op1);
150 std::stringstream
ss;
152 printIntReg(
ss, dest);
154 printIntReg(
ss, dest2);
156 printMiscReg(
ss, op1);
163 std::stringstream
ss;
165 printMiscReg(
ss, dest);
167 printIntReg(
ss, op1);
169 printIntReg(
ss, op2);
176 std::stringstream
ss;
185 std::stringstream
ss;
187 printIntReg(
ss, dest);
195 std::stringstream
ss;
197 printIntReg(
ss, dest);
199 printIntReg(
ss, op1);
206 std::stringstream
ss;
208 printIntReg(
ss, dest);
216 std::stringstream
ss;
218 printIntReg(
ss, dest);
220 printIntReg(
ss, op1);
222 printIntReg(
ss, op2);
231 std::stringstream
ss;
233 printIntReg(
ss, dest);
235 printIntReg(
ss, op1);
237 printIntReg(
ss, op2);
239 printIntReg(
ss, op3);
247 std::stringstream
ss;
249 printIntReg(
ss, dest);
251 printIntReg(
ss, op1);
253 printIntReg(
ss, op2);
261 std::stringstream
ss;
263 printIntReg(
ss, dest);
265 printIntReg(
ss, op1);
274 std::stringstream
ss;
276 printMiscReg(
ss, dest);
278 printIntReg(
ss, op1);
286 std::stringstream
ss;
288 printIntReg(
ss, dest);
290 printMiscReg(
ss, op1);
298 std::stringstream
ss;
300 printIntReg(
ss, dest);
309 std::stringstream
ss;
311 printIntReg(
ss, dest);
313 printIntReg(
ss, op1);
322 std::stringstream
ss;
324 printIntReg(
ss, dest);
326 printIntReg(
ss, op1);
334 std::stringstream
ss;
336 printIntReg(
ss, dest);
338 printShiftOperand(
ss, op1,
true, shiftAmt,
INTREG_ZERO, shiftType);
339 printIntReg(
ss, op1);
354 flags[IsNonSpeculative] =
true;
365 return std::make_shared<HypervisorTrap>(
machInst,
iss,
391 return std::make_shared<HypervisorTrap>(
machInst,
iss,
394 return std::make_shared<UndefinedInstruction>(
machInst,
false,
std::bitset< Num_Flags > flags
Flag values for this instruction.
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::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.
bool mcrMrc15TrapToHyp(const MiscRegIndex miscReg, ThreadContext *tc, uint32_t iss, ExceptionClass *ec)
void printMsrBase(std::ostream &os) const
Register ID: describe an architectural register with its class and index.
McrMrcImplDefined(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::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.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::shared_ptr< FaultBase > Fault
McrMrcMiscInst(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
const char * mnemonic
Base mnemonic (e.g., "add").
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
constexpr decltype(nullptr) NoFault
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.
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.
@ EC_TRAPPED_CP15_MCR_MRC
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.
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
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.
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::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.
ArmISA::MiscRegIndex miscReg
void ccprintf(cp::Print &print)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Bitfield< 27, 25 > encoding
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string csprintf(const char *format, const Args &...args)
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.
Generated on Wed Sep 30 2020 14:02:00 for gem5 by doxygen 1.8.17