summaryrefslogtreecommitdiff
path: root/src/arch/x86/insts
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2017-12-20 00:02:47 -0800
committerGabe Black <gabeblack@google.com>2017-12-23 03:36:45 +0000
commit87eb9a3a640875d176bec9dfb130450d23d8e8b8 (patch)
tree305da38c7ea611b9404dcf2d8a79e74cac8bef73 /src/arch/x86/insts
parentb7618c69a511e3fde5cdb674a91e5683f92e770f (diff)
downloadgem5-87eb9a3a640875d176bec9dfb130450d23d8e8b8.tar.xz
riscv,x86: Stop using the arch Nop machine instruction unnecessarily.
That particular ExtMachInst is a convenient placeholder, but a value of 0 in RISCV or a static uninitialized ExtMachInst (which will therefore be all zeroes) on x86 works just as well, and removes the need for an ISA specific constant. Also, the idea of a universal Nop doesn't always make sense since it could be that what, exactly, doesn't do anything depends on context which would be lost on a constant value of an ExtMachInst. For instance, the value of an ExtMachInst that makes sense might depend on what mode the CPU was in, etc. Change-Id: I1f1a43a5c607a667e11b79bcf6e059e4f7141b3f Reviewed-on: https://gem5-review.googlesource.com/6825 Reviewed-by: Gabe Black <gabeblack@google.com> Reviewed-by: Alec Roelke <ar4jc@virginia.edu> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/arch/x86/insts')
-rw-r--r--src/arch/x86/insts/badmicroop.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/arch/x86/insts/badmicroop.cc b/src/arch/x86/insts/badmicroop.cc
index 21af1281b..09248738d 100644
--- a/src/arch/x86/insts/badmicroop.cc
+++ b/src/arch/x86/insts/badmicroop.cc
@@ -42,14 +42,21 @@
#include "arch/x86/generated/decoder.hh"
#include "arch/x86/isa_traits.hh"
+namespace {
+
+static X86ISA::ExtMachInst dummyMachInst;
+
+}
+
namespace X86ISA
{
// This microop needs to be allocated on the heap even though it could
// theoretically be statically allocated. The reference counted pointer would
// try to delete the static memory when it was destructed.
+
const StaticInstPtr badMicroop =
- new X86ISAInst::MicroPanic(NoopMachInst, "BAD",
+ new X86ISAInst::MicroPanic(dummyMachInst, "BAD",
StaticInst::IsMicroop | StaticInst::IsLastMicroop,
"Invalid microop!", 0);