40 #ifndef __ARCH_ARM_INSTS_MISC_HH__ 41 #define __ARCH_ARM_INSTS_MISC_HH__ 52 PredOp(mnem, _machInst, __opClass), dest(_dest)
66 PredOp(mnem, _machInst, __opClass), byteMask(_byteMask)
69 void printMsrBase(std::ostream &
os)
const;
78 uint32_t _imm, uint8_t _byteMask) :
79 MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm)
93 MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1)
111 PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest),
112 dest2(_dest2), imm(_imm)
130 PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2),
131 dest(_dest), imm(_imm)
145 PredOp(mnem, _machInst, __opClass), imm(_imm)
160 PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm)
175 PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1)
189 PredOp(mnem, _machInst, __opClass), dest(_dest)
205 PredOp(mnem, _machInst, __opClass),
206 dest(_dest), imm(_imm), op1(_op1)
224 PredOp(mnem, _machInst, __opClass),
225 dest(_dest), op1(_op1), op2(_op2), imm(_imm)
243 PredOp(mnem, _machInst, __opClass),
244 dest(_dest), op1(_op1), op2(_op2), op3(_op3)
260 PredOp(mnem, _machInst, __opClass),
261 dest(_dest), op1(_op1), op2(_op2)
278 PredOp(mnem, _machInst, __opClass),
279 dest(_dest), op1(_op1), imm(_imm)
296 PredOp(mnem, _machInst, __opClass),
297 dest(_dest), op1(_op1), imm(_imm)
314 PredOp(mnem, _machInst, __opClass),
315 dest(_dest), op1(_op1), imm(_imm)
330 IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2) :
331 PredOp(mnem, _machInst, __opClass),
332 dest(_dest), imm1(_imm1), imm2(_imm2)
349 uint64_t _imm1, uint64_t _imm2) :
350 PredOp(mnem, _machInst, __opClass),
351 dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2)
370 PredOp(mnem, _machInst, __opClass),
371 dest(_dest), imm(_imm), op1(_op1),
372 shiftAmt(_shiftAmt), shiftType(_shiftType)
384 PredOp(mnem, _machInst, __opClass)
MsrBase(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint8_t _byteMask)
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)
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const override
Internal function to generate disassembly string.
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)