Go to the documentation of this file.
46 using namespace ArmISA;
53 printIntReg(
ss, dest);
55 bool foundPsr =
false;
56 for (
unsigned i = 0;
i < numSrcRegs();
i++) {
83 bool foundPsr =
false;
84 for (
unsigned i = 0;
i < numDestRegs();
i++) {
95 if (
bits(byteMask, 1, 0)) {
109 if (
bits(byteMask, 3)) {
116 if (
bits(byteMask, 2)) {
123 if (
bits(byteMask, 1)) {
126 if (
bits(byteMask, 0)) {
134 std::stringstream
ss;
143 std::stringstream
ss;
146 printIntReg(
ss, op1);
153 std::stringstream
ss;
155 printIntReg(
ss, dest);
157 printIntReg(
ss, dest2);
159 printMiscReg(
ss, op1);
166 std::stringstream
ss;
168 printMiscReg(
ss, dest);
170 printIntReg(
ss, op1);
172 printIntReg(
ss, op2);
179 std::stringstream
ss;
188 std::stringstream
ss;
190 printIntReg(
ss, dest);
198 std::stringstream
ss;
200 printIntReg(
ss, dest);
202 printIntReg(
ss, op1);
209 std::stringstream
ss;
211 printIntReg(
ss, dest);
219 std::stringstream
ss;
221 printIntReg(
ss, dest);
223 printIntReg(
ss, op1);
225 printIntReg(
ss, op2);
234 std::stringstream
ss;
236 printIntReg(
ss, dest);
238 printIntReg(
ss, op1);
240 printIntReg(
ss, op2);
242 printIntReg(
ss, op3);
250 std::stringstream
ss;
252 printIntReg(
ss, dest);
254 printIntReg(
ss, op1);
256 printIntReg(
ss, op2);
264 std::stringstream
ss;
266 printIntReg(
ss, dest);
268 printIntReg(
ss, op1);
277 std::stringstream
ss;
279 printMiscReg(
ss, dest);
281 printIntReg(
ss, op1);
289 std::stringstream
ss;
291 printIntReg(
ss, dest);
293 printMiscReg(
ss, op1);
301 std::stringstream
ss;
303 printIntReg(
ss, dest);
312 std::stringstream
ss;
314 printIntReg(
ss, dest);
316 printIntReg(
ss, op1);
325 std::stringstream
ss;
327 printIntReg(
ss, dest);
329 printIntReg(
ss, op1);
337 std::stringstream
ss;
339 printIntReg(
ss, dest);
341 printShiftOperand(
ss, op1,
true, shiftAmt, INTREG_ZERO, shiftType);
342 printIntReg(
ss, op1);
357 flags[IsNonSpeculative] =
true;
368 return std::make_shared<HypervisorTrap>(
machInst,
iss,
394 return std::make_shared<HypervisorTrap>(
machInst,
iss,
397 return std::make_shared<UndefinedInstruction>(
machInst,
false,
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
constexpr decltype(nullptr) NoFault
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 printMsrBase(std::ostream &os) const
@ EC_TRAPPED_CP15_MCR_MRC
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 csprintf(const char *format, const Args &...args)
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 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 ccprintf(cp::Print &print)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::shared_ptr< FaultBase > Fault
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.
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
McrMrcMiscInst(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.
virtual ThreadContext * tcBase() const =0
Returns a pointer to the ThreadContext.
std::bitset< Num_Flags > flags
Flag values for this instruction.
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
bool mcrMrc15TrapToHyp(const MiscRegIndex misc_reg, ThreadContext *tc, uint32_t iss, ExceptionClass *ec)
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.
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
@ MiscRegClass
Control (misc) register.
McrMrcImplDefined(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...
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.
const char * mnemonic
Base mnemonic (e.g., "add").
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
ArmISA::MiscRegIndex miscReg
Register ID: describe an architectural register with its class and index.
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
Generated on Tue Feb 8 2022 11:46:57 for gem5 by doxygen 1.8.17