diff options
Diffstat (limited to 'src/arch/arm/insts/misc64.hh')
-rw-r--r-- | src/arch/arm/insts/misc64.hh | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/arch/arm/insts/misc64.hh b/src/arch/arm/insts/misc64.hh index 8af488a02..f70344bcb 100644 --- a/src/arch/arm/insts/misc64.hh +++ b/src/arch/arm/insts/misc64.hh @@ -178,4 +178,32 @@ class RegMiscRegImmOp64 : public MiscRegOp64 Addr pc, const SymbolTable *symtab) const override; }; +class MiscRegImplDefined64 : public MiscRegOp64 +{ + protected: + const std::string fullMnemonic; + const MiscRegIndex miscReg; + const uint32_t imm; + const bool warning; + + public: + MiscRegImplDefined64(const char *mnem, ExtMachInst _machInst, + MiscRegIndex misc_reg, bool misc_read, + uint32_t _imm, const std::string full_mnem, + bool _warning) : + MiscRegOp64(mnem, _machInst, No_OpClass, misc_read), + fullMnemonic(full_mnem), miscReg(misc_reg), imm(_imm), + warning(_warning) + { + assert(miscReg == MISCREG_IMPDEF_UNIMPL); + } + + protected: + Fault execute(ExecContext *xc, + Trace::InstRecord *traceData) const override; + + std::string generateDisassembly( + Addr pc, const SymbolTable *symtab) const override; +}; + #endif |