Go to the documentation of this file.
47 using namespace ArmISA;
54 printIntReg(
ss, dest);
56 bool foundPsr =
false;
57 for (
unsigned i = 0;
i < numSrcRegs();
i++) {
84 bool foundPsr =
false;
85 for (
unsigned i = 0;
i < numDestRegs();
i++) {
96 if (
bits(byteMask, 1, 0)) {
110 if (
bits(byteMask, 3)) {
117 if (
bits(byteMask, 2)) {
124 if (
bits(byteMask, 1)) {
127 if (
bits(byteMask, 0)) {
135 std::stringstream
ss;
144 std::stringstream
ss;
147 printIntReg(
ss, op1);
154 std::stringstream
ss;
156 printIntReg(
ss, dest);
158 printIntReg(
ss, dest2);
160 printMiscReg(
ss, op1);
167 std::stringstream
ss;
169 printMiscReg(
ss, dest);
171 printIntReg(
ss, op1);
173 printIntReg(
ss, op2);
180 std::stringstream
ss;
189 std::stringstream
ss;
191 printIntReg(
ss, dest);
199 std::stringstream
ss;
201 printIntReg(
ss, dest);
203 printIntReg(
ss, op1);
210 std::stringstream
ss;
212 printIntReg(
ss, dest);
220 std::stringstream
ss;
222 printIntReg(
ss, dest);
224 printIntReg(
ss, op1);
226 printIntReg(
ss, op2);
235 std::stringstream
ss;
237 printIntReg(
ss, dest);
239 printIntReg(
ss, op1);
241 printIntReg(
ss, op2);
243 printIntReg(
ss, op3);
251 std::stringstream
ss;
253 printIntReg(
ss, dest);
255 printIntReg(
ss, op1);
257 printIntReg(
ss, op2);
265 std::stringstream
ss;
267 printIntReg(
ss, dest);
269 printIntReg(
ss, op1);
278 std::stringstream
ss;
280 printMiscReg(
ss, dest);
282 printIntReg(
ss, op1);
290 std::stringstream
ss;
292 printIntReg(
ss, dest);
294 printMiscReg(
ss, op1);
302 std::stringstream
ss;
304 printIntReg(
ss, dest);
313 std::stringstream
ss;
315 printIntReg(
ss, dest);
317 printIntReg(
ss, op1);
326 std::stringstream
ss;
328 printIntReg(
ss, dest);
330 printIntReg(
ss, op1);
338 std::stringstream
ss;
340 printIntReg(
ss, dest);
343 printIntReg(
ss, op1);
358 flags[IsNonSpeculative] =
true;
389 return std::make_shared<UndefinedInstruction>(
machInst,
false,
413 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
423 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
433 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
443 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
457 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
460 mbits(value, 31, 12),
472 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
475 mbits(value, 31, 12),
486 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
499 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
516 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
518 mbits(value, 31,12));
529 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
531 mbits(value, 31,12));
545 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
547 mbits(value, 31,12));
558 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
560 mbits(value, 31,12));
574 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
577 static_cast<Addr>(
bits(value, 35, 0)) << 12);
589 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
592 static_cast<Addr>(
bits(value, 35, 0)) << 12);
602 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
605 mbits(value, 31, 12),
616 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
619 mbits(value, 31, 12),
630 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
643 bool secure = release->has(ArmExtension::SECURITY) && !scr.ns;
680 panic(
"Unrecognized TLBIOp\n");
Instruction TLB Invalidate All.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
virtual RegVal readMiscReg(RegIndex misc_reg)=0
constexpr decltype(nullptr) NoFault
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
TLB Invalidate by ASID match.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void performTlbi(ExecContext *xc, ArmISA::MiscRegIndex dest_idx, RegVal value) const
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void printMsrBase(std::ostream &os) const
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.
constexpr T mbits(T val, unsigned first, unsigned last)
Mask off the given bits in place like bits() but without shifting.
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.
Data TLB Invalidate by ASID match.
Instruction TLB Invalidate by ASID match.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Instruction TLB Invalidate by VA.
void ccprintf(cp::Print &print)
Fault mcrMrc15Trap(const MiscRegIndex misc_reg, ExtMachInst mach_inst, ThreadContext *tc, uint32_t imm)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
TLB Invalidate All, Non-Secure.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
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.
TLB Invalidate by VA, All ASID.
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.
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.
TLB Invalidate by Intermediate Physical Address.
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.
void broadcast(ThreadContext *tc)
Broadcast the TLB Invalidate operation to all TLBs in the Arm system.
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.
Data TLB Invalidate by VA.
virtual BaseISA * getIsaPtr() const =0
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....
constexpr RegId Zero(CCRegClass, _ZeroIdx)
const ArmRelease * getRelease() const
ArmISA::MiscRegIndex miscReg
Register ID: describe an architectural register with its class and index.
#define panic(...)
This implements a cprintf based panic() function.
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
Generated on Wed Jul 13 2022 10:39:10 for gem5 by doxygen 1.8.17