diff options
Diffstat (limited to 'src/arch/arm/insts/pseudo.hh')
-rw-r--r-- | src/arch/arm/insts/pseudo.hh | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/arch/arm/insts/pseudo.hh b/src/arch/arm/insts/pseudo.hh index 3bf3b2c3a..fe28789f0 100644 --- a/src/arch/arm/insts/pseudo.hh +++ b/src/arch/arm/insts/pseudo.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 ARM Limited + * Copyright (c) 2014,2016 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -115,10 +115,21 @@ class WarnUnimplemented : public ArmStaticInst generateDisassembly(Addr pc, const SymbolTable *symtab) const; }; -class FlushPipeInst : public ArmStaticInst +/** + * Certain mrc/mcr instructions act as nops or flush the pipe based on what + * register the instruction is trying to access. This inst/class exists so that + * we can still check for hyp traps, as the normal nop instruction + * does not. + */ +class McrMrcMiscInst : public ArmStaticInst { + private: + uint64_t iss; + MiscRegIndex miscReg; + public: - FlushPipeInst(const char *_mnemonic, ExtMachInst _machInst); + McrMrcMiscInst(const char *_mnemonic, ExtMachInst _machInst, + uint64_t _iss, MiscRegIndex _miscReg); Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const; @@ -127,5 +138,4 @@ class FlushPipeInst : public ArmStaticInst }; - #endif |