sparc: Pull the "Uknown" StaticInst class out of the ISA description.
authorGabe Black <gabeblack@google.com>
Tue, 7 Nov 2017 02:57:27 +0000 (18:57 -0800)
committerGabe Black <gabeblack@google.com>
Wed, 22 Nov 2017 00:22:27 +0000 (00:22 +0000)
The only thing the Unknown format does is return an instance of this
class, so there's no reason to have it in the ISA description.

Change-Id: I3f8187b1450a8622a974c030c0cb552b26f6b5f0
Reviewed-on: https://gem5-review.googlesource.com/5463
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/arch/sparc/insts/unknown.hh [new file with mode: 0644]
src/arch/sparc/isa/formats/unknown.isa
src/arch/sparc/isa/includes.isa

diff --git a/src/arch/sparc/insts/unknown.hh b/src/arch/sparc/insts/unknown.hh
new file mode 100644 (file)
index 0000000..b5826e4
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2006 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Gabe Black
+ *          Steve Reinhardt
+ */
+
+#ifndef __ARCH_SPARC_INSTS_UNKNOWN_HH__
+#define __ARCH_SPARC_INSTS_UNKNOWN_HH__
+
+#include "arch/sparc/insts/static_inst.hh"
+
+namespace SparcISA
+{
+
+/**
+ * Class for Unknown/Illegal instructions
+ */
+class Unknown : public SparcStaticInst
+{
+  public:
+
+    // Constructor
+    Unknown(ExtMachInst _machInst) :
+            SparcStaticInst("unknown", _machInst, No_OpClass)
+    {}
+
+    Fault
+    execute(ExecContext *, Trace::InstRecord *) const override
+    {
+        return std::make_shared<IllegalInstruction>();
+    }
+
+    std::string
+    generateDisassembly(Addr pc, const SymbolTable *symtab) const override
+    {
+        return "Unknown instruction";
+    }
+
+};
+
+}
+
+#endif // __ARCH_SPARC_INSTS_UNKNOWN_HH__
index f6f9e878b48cf795e544aeedd27de09a49c5956b..9e02dea22f64959d65331a8e033ee9c1a35ff218 100644 (file)
 // Unknown instructions
 //
 
-output header {{
-        /**
-         * Class for Unknown/Illegal instructions
-         */
-        class Unknown : public SparcStaticInst
-        {
-          public:
-
-            // Constructor
-            Unknown(ExtMachInst _machInst) :
-                    SparcStaticInst("unknown", _machInst, No_OpClass)
-            {
-            }
-
-            Fault execute(ExecContext *, Trace::InstRecord *) const;
-
-            std::string generateDisassembly(Addr pc,
-                    const SymbolTable *symtab) const;
-
-        };
-}};
-
-output decoder {{
-        std::string Unknown::generateDisassembly(Addr pc,
-                const SymbolTable *symtab) const
-        {
-            return "Unknown instruction";
-        }
-}};
-
-output exec {{
-        Fault Unknown::execute(ExecContext *xc,
-                Trace::InstRecord *traceData) const
-        {
-            return std::make_shared<IllegalInstruction>();
-        }
-}};
-
 def format Unknown() {{
         decode_block = 'return new Unknown(machInst);\n'
 }};
index fb0196f3ddecb159470c4b60f5e90299d6b3a7b2..9077f7cb087c9b1e18beb727a64aba6997f23b13 100644 (file)
@@ -44,6 +44,7 @@ output header {{
 #include "arch/sparc/insts/priv.hh"
 #include "arch/sparc/insts/static_inst.hh"
 #include "arch/sparc/insts/trap.hh"
+#include "arch/sparc/insts/unknown.hh"
 #include "arch/sparc/isa_traits.hh"
 #include "arch/sparc/registers.hh"
 #include "base/condcodes.hh"