summaryrefslogtreecommitdiff
path: root/src/arch/arm/insts/pseudo.hh
diff options
context:
space:
mode:
authorDylan Johnson <Dylan.Johnson@ARM.com>2016-08-02 10:38:01 +0100
committerDylan Johnson <Dylan.Johnson@ARM.com>2016-08-02 10:38:01 +0100
commite727a0eeaa5f2d46921c8496d77623a9704d40b6 (patch)
tree3222bfcdd7e86d6c29fbb0fdcf69db276879b732 /src/arch/arm/insts/pseudo.hh
parentc20b6c56f68fe829965826dd0040bd1a1ddd76c7 (diff)
downloadgem5-e727a0eeaa5f2d46921c8496d77623a9704d40b6.tar.xz
arm: change instruction classes to catch hyp traps
Change-Id: I122918d0e3dfd01ae1a4ca4f19240a069115c8b7
Diffstat (limited to 'src/arch/arm/insts/pseudo.hh')
-rw-r--r--src/arch/arm/insts/pseudo.hh18
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