38 #ifndef __ARCH_ARM_INSTS_MISC_HH__ 39 #define __ARCH_ARM_INSTS_MISC_HH__ 50 PredOp(mnem, _machInst, __opClass), dest(_dest)
64 PredOp(mnem, _machInst, __opClass), byteMask(_byteMask)
67 void printMsrBase(std::ostream &
os)
const;
76 uint32_t _imm, uint8_t _byteMask) :
77 MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm)
91 MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1)
109 PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest),
110 dest2(_dest2), imm(_imm)
128 PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2),
129 dest(_dest), imm(_imm)
143 PredOp(mnem, _machInst, __opClass), imm(_imm)
158 PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm)
173 PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1)
187 PredOp(mnem, _machInst, __opClass), dest(_dest)
203 PredOp(mnem, _machInst, __opClass),
204 dest(_dest), imm(_imm), op1(_op1)
222 PredOp(mnem, _machInst, __opClass),
223 dest(_dest), op1(_op1), op2(_op2), imm(_imm)
241 PredOp(mnem, _machInst, __opClass),
242 dest(_dest), op1(_op1), op2(_op2), op3(_op3)
258 PredOp(mnem, _machInst, __opClass),
259 dest(_dest), op1(_op1), op2(_op2)
276 PredOp(mnem, _machInst, __opClass),
277 dest(_dest), op1(_op1), imm(_imm)
294 PredOp(mnem, _machInst, __opClass),
295 dest(_dest), op1(_op1), imm(_imm)
312 PredOp(mnem, _machInst, __opClass),
313 dest(_dest), op1(_op1), imm(_imm)
328 IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2) :
329 PredOp(mnem, _machInst, __opClass),
330 dest(_dest), imm1(_imm1), imm2(_imm2)
347 uint64_t _imm1, uint64_t _imm2) :
348 PredOp(mnem, _machInst, __opClass),
349 dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2)
368 PredOp(mnem, _machInst, __opClass),
369 dest(_dest), imm(_imm), op1(_op1),
370 shiftAmt(_shiftAmt), shiftType(_shiftType)
382 PredOp(mnem, _machInst, __opClass)
MsrBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint8_t _byteMask)
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
ImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint64_t _imm)
MrrcOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, MiscRegIndex _op1, IntRegIndex _dest, IntRegIndex _dest2, uint32_t _imm)
Base class for predicated integer operations.
virtual Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const =0
RegMiscRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, MiscRegIndex _op1, uint64_t _imm)
UnknownOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
This class is also used for IMPLEMENTATION DEFINED registers, whose mcr/mrc behaviour is trappable ev...
MiscRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, MiscRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
RegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2)
MrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest)
RegRegImmImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm1, uint64_t _imm2)
RegImmRegShiftOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1, int32_t _shiftAmt, ArmShiftType _shiftType)
RegRegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _op3)
RegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
RegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm)
RegImmRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1)
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
RegRegRegImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, uint64_t _imm)
RegRegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2)
MsrImmOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint32_t _imm, uint8_t _byteMask)
MsrRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1, uint8_t _byteMask)
RegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest)
RegRegOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1)
std::shared_ptr< FaultBase > Fault
McrrOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _op1, IntRegIndex _op2, MiscRegIndex _dest, uint32_t _imm)