diff options
author | Gabe Black <gabeblack@google.com> | 2017-12-19 23:44:39 -0800 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-12-22 00:27:20 +0000 |
commit | 3742cc9137b43d1e42957d8b440044fa9e95e907 (patch) | |
tree | 0e5fe46d7bb8dcee131d81f6bc4faff78ed0c6d5 | |
parent | 7df83c94da53f8d04367cb472be8f7f947f94234 (diff) | |
download | gem5-3742cc9137b43d1e42957d8b440044fa9e95e907.tar.xz |
cpu: Add a pointer to a generic Nop StaticInst.
This can be used whenever generic code needs a filler instruction that
doesn't do anything.
Change-Id: Ib245d3e880a951e229eb315a09ecc7c47e6ae00f
Reviewed-on: https://gem5-review.googlesource.com/6823
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r-- | src/cpu/static_inst.cc | 34 | ||||
-rw-r--r-- | src/cpu/static_inst.hh | 3 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/cpu/static_inst.cc b/src/cpu/static_inst.cc index d50c9f15d..cdcd93c58 100644 --- a/src/cpu/static_inst.cc +++ b/src/cpu/static_inst.cc @@ -35,7 +35,41 @@ #include "sim/core.hh" +namespace { + +static TheISA::ExtMachInst nopMachInst; + +class NopStaticInst : public StaticInst +{ + public: + NopStaticInst() : StaticInst("gem5 nop", nopMachInst, No_OpClass) + {} + + Fault + execute(ExecContext *xc, Trace::InstRecord *traceData) const override + { + return NoFault; + } + + void + advancePC(TheISA::PCState &pcState) const override + { + pcState.advance(); + } + + std::string + generateDisassembly(Addr pc, const SymbolTable *symtab) const override + { + return mnemonic; + } + + private: +}; + +} + StaticInstPtr StaticInst::nullStaticInstPtr; +StaticInstPtr StaticInst::nopStaticInstPtr = new NopStaticInst; using namespace std; diff --git a/src/cpu/static_inst.hh b/src/cpu/static_inst.hh index a4077e1d0..79f45d828 100644 --- a/src/cpu/static_inst.hh +++ b/src/cpu/static_inst.hh @@ -205,6 +205,9 @@ class StaticInst : public RefCounted, public StaticInstFlags /// Pointer to a statically allocated "null" instruction object. static StaticInstPtr nullStaticInstPtr; + /// Pointer to a statically allocated generic "nop" instruction object. + static StaticInstPtr nopStaticInstPtr; + /// The binary machine instruction. const ExtMachInst machInst; |