alpha,arm,mips,power,riscv,sparc,x86: Merge exec decl templates.
authorGabe Black <gabeblack@google.com>
Sat, 4 Nov 2017 10:45:23 +0000 (03:45 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 7 Nov 2017 01:31:24 +0000 (01:31 +0000)
In the ISA instruction definitions, some classes were declared with
execute, etc., functions outside of the main template because they
had CPU specific signatures and would need to be duplicated with
each CPU plugged into them. Now that the instructions always just
use an ExecContext, there's no reason for those templates to be
separate. This change folds those templates together.

Change-Id: I13bda247d3d1cc07c0ea06968e48aa5b4aace7fa
Reviewed-on: https://gem5-review.googlesource.com/5401
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

62 files changed:
src/arch/alpha/isa/main.isa
src/arch/alpha/isa/mem.isa
src/arch/alpha/isa/opcdec.isa
src/arch/alpha/isa/unimp.isa
src/arch/arm/insts/pred_inst.hh
src/arch/arm/isa/formats/breakpoint.isa
src/arch/arm/isa/insts/fp.isa
src/arch/arm/isa/templates/basic.isa
src/arch/arm/isa/templates/branch.isa
src/arch/arm/isa/templates/branch64.isa
src/arch/arm/isa/templates/data64.isa
src/arch/arm/isa/templates/macromem.isa
src/arch/arm/isa/templates/mem.isa
src/arch/arm/isa/templates/mem64.isa
src/arch/arm/isa/templates/misc.isa
src/arch/arm/isa/templates/misc64.isa
src/arch/arm/isa/templates/mult.isa
src/arch/arm/isa/templates/neon.isa
src/arch/arm/isa/templates/neon64.isa
src/arch/arm/isa/templates/pred.isa
src/arch/arm/isa/templates/vfp.isa
src/arch/arm/isa/templates/vfp64.isa
src/arch/mips/isa/formats/basic.isa
src/arch/mips/isa/formats/mem.isa
src/arch/mips/isa/formats/noop.isa
src/arch/mips/isa/formats/unimp.isa
src/arch/mips/isa/formats/unknown.isa
src/arch/power/isa/formats/basic.isa
src/arch/power/isa/formats/mem.isa
src/arch/power/isa/formats/unimp.isa
src/arch/power/isa/formats/unknown.isa
src/arch/riscv/isa/base.isa [deleted file]
src/arch/riscv/isa/formats/amo.isa
src/arch/riscv/isa/formats/basic.isa
src/arch/riscv/isa/formats/mem.isa
src/arch/riscv/isa/formats/standard.isa
src/arch/riscv/isa/formats/unknown.isa
src/arch/riscv/isa/includes.isa
src/arch/riscv/isa/main.isa
src/arch/riscv/isa/micro.isa [deleted file]
src/arch/riscv/static_inst.hh [new file with mode: 0644]
src/arch/sparc/isa/formats/basic.isa
src/arch/sparc/isa/formats/mem/basicmem.isa
src/arch/sparc/isa/formats/mem/blockmem.isa
src/arch/sparc/isa/formats/mem/util.isa
src/arch/sparc/isa/formats/micro.isa
src/arch/sparc/isa/formats/nop.isa
src/arch/sparc/isa/formats/unimp.isa
src/arch/sparc/isa/formats/unknown.isa
src/arch/x86/isa/formats/basic.isa
src/arch/x86/isa/formats/monitor_mwait.isa
src/arch/x86/isa/formats/unimp.isa
src/arch/x86/isa/formats/unknown.isa
src/arch/x86/isa/macroop.isa
src/arch/x86/isa/microops/debug.isa
src/arch/x86/isa/microops/fpop.isa
src/arch/x86/isa/microops/ldstop.isa
src/arch/x86/isa/microops/limmop.isa
src/arch/x86/isa/microops/mediaop.isa
src/arch/x86/isa/microops/regop.isa
src/arch/x86/isa/microops/seqop.isa
src/arch/x86/isa/microops/specop.isa

index a6c9afe8883e56c95f4984db5744eeaa28456d04..a23710a2d27ba09e8f5d732055886b5bbe5e3cc6 100644 (file)
@@ -285,11 +285,6 @@ output decoder {{
     }
 }};
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-    Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
     /**
@@ -301,7 +296,7 @@ def template BasicDeclare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -383,7 +378,7 @@ output header {{
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 
     /// Helper function for decoding nops.  Substitute Nop object
index 5c76c263e85a8b7a8e0c0a575851f600872463b7..6756b7258f3ad88641298fc6493d9e0e2cde9ccb 100644 (file)
@@ -129,30 +129,13 @@ def template LoadStoreDeclare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst);
 
-        %(BasicExecDeclare)s
-
-        %(EACompDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault eaComp(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
-
-def template EACompDeclare {{
-    Fault eaComp(ExecContext *, Trace::InstRecord *) const;
-}};
-
-def template InitiateAccDeclare {{
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
-
-def template CompleteAccDeclare {{
-    Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
-}};
-
 def template LoadStoreConstructor {{
     %(class_name)s::%(class_name)s(ExtMachInst machInst)
          : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
index 3ea56573a2fc4414960125946f747d0304f91a3c..3bd3835a154dc827e8815aa0b9acc58445343202 100644 (file)
@@ -48,7 +48,7 @@ output header {{
         {
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index 0446707bb361204fe240c7ee95632100f0c4ba0b..39f17766321afd75f451c2f545ddcdcd4408ce7c 100644 (file)
@@ -53,7 +53,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -84,7 +84,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -163,7 +163,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index 09ebbb1209a2ed73c0d8314d3d8e2bfa9257f0e5..b4186c8e5fe9ec8c6c9ca431bee10121bac01d01 100644 (file)
@@ -333,6 +333,12 @@ class PredMacroOp : public PredOp
         return microOps[microPC];
     }
 
+    Fault
+    execute(ExecContext *, Trace::InstRecord *) const
+    {
+        panic("Execute method called when it shouldn't!");
+    }
+
     std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
 };
 
index 69d6855e3f5e83cd7316545441a99a5e99af6ef4..a22f2de7adcba30e343e0d572e6b6043a3ff7d43 100644 (file)
@@ -63,7 +63,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index dff906755084c92011f6452922ca8bd916ef6e59..dcf5889fb535d5a16273a93d2d44c4d595c444fb 100644 (file)
@@ -60,8 +60,6 @@ class VfpMacroRegRegOp : public VfpMacroOp
             nextIdxs(_dest, _op1);
         }
     }
-
-    %(BasicExecPanic)s
 };
 
 template <class VfpOp>
@@ -96,8 +94,6 @@ class VfpMacroRegImmOp : public VfpMacroOp
             nextIdxs(_dest);
         }
     }
-
-    %(BasicExecPanic)s
 };
 
 template <class VfpOp>
@@ -132,8 +128,6 @@ class VfpMacroRegRegImmOp : public VfpMacroOp
             nextIdxs(_dest, _op1);
         }
     }
-
-    %(BasicExecPanic)s
 };
 
 template <class VfpOp>
@@ -168,8 +162,6 @@ class VfpMacroRegRegRegOp : public VfpMacroOp
             nextIdxs(_dest, _op1, _op2);
         }
     }
-
-    %(BasicExecPanic)s
 };
 
 template <class VfpOp>
index c4c570bbe575e293d605dbb944b899b2e0149c67..ebfddb0a67b88adfc01040af46c3c0a9553b33d1 100644 (file)
 //
 // Authors: Stephen Hines
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-        Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
         /**
@@ -55,7 +50,7 @@ def template BasicDeclare {{
           public:
                 /// Constructor.
                 %(class_name)s(ExtMachInst machInst);
-                %(BasicExecDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
         };
 }};
 
@@ -108,13 +103,3 @@ def template BasicDecode {{
 def template BasicDecodeWithMnemonic {{
         return new %(class_name)s("%(mnemonic)s", machInst);
 }};
-
-// Definitions of execute methods that panic.
-def template BasicExecPanic {{
-Fault execute(ExecContext *, Trace::InstRecord *) const
-{
-        panic("Execute method called when it shouldn't!");
-        // GCC < 4.3 fail to recognize the above panic as no return
-        return NoFault;
-}
-}};
index 92c566726ff61a190565250b636524a5492c461c..54821e7c82118705a976a3a22e04eafc24429e73 100644 (file)
@@ -43,7 +43,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, int32_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -72,7 +72,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, int32_t _imm,
                        ConditionCode _condCode);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
         ArmISA::PCState branchTarget(const ArmISA::PCState &branchPC) const;
 
         /// Explicitly import the otherwise hidden branchTarget
@@ -105,7 +105,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -135,7 +135,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1,
                        ConditionCode _condCode);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -167,7 +167,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _op1, IntRegIndex _op2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -178,11 +178,9 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _op1, IntRegIndex _op2);
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -211,7 +209,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        int32_t imm, IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
         ArmISA::PCState branchTarget(const ArmISA::PCState &branchPC) const;
 
         /// Explicitly import the otherwise hidden branchTarget
index 241d12260c1fd642ed25998c124b3934d4a4d47f..c55d20541d328d71cd9a23e4bdbc99df51f277f6 100644 (file)
@@ -43,7 +43,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, int64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -63,7 +63,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, int64_t _imm,
                        ConditionCode _condCode);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -84,7 +84,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -104,7 +104,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        int64_t imm, IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -125,7 +125,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, int64_t _imm1, int64_t _imm2,
                        IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index 7b0438a012097558bb5b3d490e81cfc91ceb6792..85dde6bed9e34cbd66d7019af6b75dd2d59fa7c6 100644 (file)
@@ -44,7 +44,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                 IntRegIndex _op1, uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -68,7 +68,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                 IntRegIndex _op1, IntRegIndex _op2,
                 int32_t _shiftAmt, ArmShiftType _shiftType);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -94,7 +94,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                 IntRegIndex _op1, IntRegIndex _op2,
                 ArmExtendType _extendType, int32_t _shiftAmt);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -119,7 +119,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -140,7 +140,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _op1, IntRegIndex _op2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -163,7 +163,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _op1, IntRegIndex _op2, uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -187,7 +187,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _op3);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -211,7 +211,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1,
                        uint64_t _imm, ConditionCode _condCode, uint8_t _defCc);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -236,7 +236,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1,
                        IntRegIndex _op2, ConditionCode _condCode,
                        uint8_t _defCc);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -261,7 +261,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _op1, IntRegIndex _op2,
                        ConditionCode _condCode);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index 05acb52ebc4aa3fa3f72d672af9d52c8d2f6d28b..b0e3d29fded2594abffbc26fa07ef3d6761eae67 100644 (file)
@@ -53,9 +53,9 @@ def template MicroMemDeclare {{
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _ura, RegIndex _urb, bool _up,
                        uint8_t _imm);
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -85,9 +85,9 @@ def template MicroMemPairDeclare {{
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _dreg1, RegIndex _dreg2, RegIndex _base,
                        bool _up, uint8_t _imm);
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -134,9 +134,9 @@ def template MicroNeonMemDeclare {{
             }
         }
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -154,7 +154,7 @@ def template MicroSetPCCPSRDeclare {{
                        IntRegIndex _ura,
                        IntRegIndex _urb,
                        IntRegIndex _urc);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -189,7 +189,7 @@ def template MicroIntDeclare {{
       public:
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _ura, RegIndex _urb, RegIndex _urc);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -251,7 +251,7 @@ def template MicroNeonMixDeclare {{
             }
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -304,7 +304,7 @@ def template MicroNeonMixLaneDeclare {{
             }
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -319,7 +319,7 @@ def template MicroIntMovDeclare {{
       public:
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _ura, RegIndex _urb);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 def template MicroIntMovConstructor {{
@@ -350,7 +350,7 @@ def template MicroIntImmDeclare {{
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _ura, RegIndex _urb,
                        int32_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -390,7 +390,7 @@ def template MicroIntRegDeclare {{
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _ura, RegIndex _urb, RegIndex _urc,
                        int32_t _shiftAmt, ArmShiftType _shiftType);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -412,7 +412,7 @@ def template MicroIntXERegDeclare {{
         %(class_name)s(ExtMachInst machInst,
                        RegIndex _ura, RegIndex _urb, RegIndex _urc,
                        ArmExtendType _type, uint32_t _shiftAmt);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -448,7 +448,6 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
                 bool index, bool up, bool user, bool writeback, bool load,
                 uint32_t reglist);
-        %(BasicExecPanic)s
 };
 }};
 
@@ -476,7 +475,6 @@ class %(class_name)s : public %(base_class)s
     // Constructor
     %(class_name)s(const char *mnemonic, ExtMachInst machInst,
                    bool load, IntRegIndex dest, IntRegIndex base, int64_t imm);
-    %(BasicExecPanic)s
 };
 }};
 
@@ -497,7 +495,6 @@ class %(class_name)s : public %(base_class)s
     %(class_name)s(const char *mnemonic, ExtMachInst machInst,
                    bool load, IntRegIndex dest, IntRegIndex base,
                    IntRegIndex offset, ArmExtendType type, int64_t imm);
-    %(BasicExecPanic)s
 };
 }};
 
@@ -519,7 +516,6 @@ class %(class_name)s : public %(base_class)s
     // Constructor
     %(class_name)s(const char *mnemonic, ExtMachInst machInst,
                    IntRegIndex dest, int64_t imm);
-    %(BasicExecPanic)s
 };
 }};
 
@@ -542,7 +538,6 @@ class %(class_name)s : public %(base_class)s
                 bool exclusive, bool acrel, uint32_t imm,
                 AddrMode mode, IntRegIndex rn, IntRegIndex rt,
                 IntRegIndex rt2);
-        %(BasicExecPanic)s
 };
 }};
 
@@ -567,7 +562,6 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, unsigned width,
                 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
                 uint32_t size, uint32_t align, RegIndex rm);
-        %(BasicExecPanic)s
 };
 }};
 
@@ -595,7 +589,6 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, bool all, unsigned width,
                 RegIndex rn, RegIndex vd, unsigned regs, unsigned inc,
                 uint32_t size, uint32_t align, RegIndex rm, unsigned lane = 0);
-        %(BasicExecPanic)s
 };
 }};
 
@@ -626,7 +619,6 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
                 RegIndex vd, bool single, bool up, bool writeback,
                 bool load, uint32_t offset);
-        %(BasicExecPanic)s
 };
 }};
 
index 44f6ea797c14a95a88829d1a81c602e2a2b1b57f..38f5d2051b747892595f187961a81ae0f4764759 100644 (file)
@@ -582,11 +582,9 @@ def template RfeDeclare {{
         %(class_name)s(ExtMachInst machInst,
                 uint32_t _base, int _mode, bool _wb);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -602,11 +600,9 @@ def template SrsDeclare {{
         %(class_name)s(ExtMachInst machInst,
                 uint32_t _regMode, int _mode, bool _wb);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -622,11 +618,9 @@ def template SwapDeclare {{
         %(class_name)s(ExtMachInst machInst,
                 uint32_t _dest, uint32_t _op1, uint32_t _base);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -643,11 +637,9 @@ def template LoadStoreDImmDeclare {{
                 uint32_t _dest, uint32_t _dest2,
                 uint32_t _base, bool _add, int32_t _imm);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -664,11 +656,9 @@ def template StoreExDImmDeclare {{
                 uint32_t _result, uint32_t _dest, uint32_t _dest2,
                 uint32_t _base, bool _add, int32_t _imm);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -684,11 +674,9 @@ def template LoadStoreImmDeclare {{
         %(class_name)s(ExtMachInst machInst,
                 uint32_t _dest, uint32_t _base, bool _add, int32_t _imm);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -710,11 +698,9 @@ def template StoreExImmDeclare {{
                 uint32_t _result, uint32_t _dest, uint32_t _base,
                 bool _add, int32_t _imm);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -733,11 +719,9 @@ def template StoreDRegDeclare {{
                 int32_t _shiftAmt, uint32_t _shiftType,
                 uint32_t _index);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -755,11 +739,9 @@ def template StoreRegDeclare {{
                 int32_t _shiftAmt, uint32_t _shiftType,
                 uint32_t _index);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -783,11 +765,9 @@ def template LoadDRegDeclare {{
                 int32_t _shiftAmt, uint32_t _shiftType,
                 uint32_t _index);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -805,11 +785,9 @@ def template LoadRegDeclare {{
                 int32_t _shiftAmt, uint32_t _shiftType,
                 uint32_t _index);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -830,11 +808,9 @@ def template LoadImmDeclare {{
         %(class_name)s(ExtMachInst machInst,
                 uint32_t _dest, uint32_t _base, bool _add, int32_t _imm);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -843,14 +819,6 @@ def template LoadImmDeclare {{
     };
 }};
 
-def template InitiateAccDeclare {{
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
-def template CompleteAccDeclare {{
-    Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
-}};
-
 def template RfeConstructor {{
     %(class_name)s::%(class_name)s(ExtMachInst machInst,
                                           uint32_t _base, int _mode, bool _wb)
index fc922b330257f5cbf37b0665a0343a478552f0bf..ff4114898cc13be76df79d1ca8a92a737b877f14 100644 (file)
@@ -258,9 +258,9 @@ def template DCStore64Declare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst, IntRegIndex _base, IntRegIndex _dest, uint64_t _imm);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -340,9 +340,9 @@ def template LoadStoreImm64Declare {{
         %(class_name)s(ExtMachInst machInst,
                 IntRegIndex _dest, IntRegIndex _base, int64_t _imm);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -362,9 +362,9 @@ def template LoadStoreImmU64Declare {{
                 bool noAlloc = false, bool exclusive = false,
                 bool acrel = false);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -384,9 +384,9 @@ def template LoadStoreImmDU64Declare {{
                 int64_t _imm = 0, bool noAlloc = false, bool exclusive = false,
                 bool acrel = false);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -408,11 +408,9 @@ def template StoreImmDEx64Declare {{
                 IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2,
                 IntRegIndex _base, int64_t _imm = 0);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -427,9 +425,9 @@ def template LoadStoreReg64Declare {{
                 IntRegIndex _dest, IntRegIndex _base, IntRegIndex _offset,
                 ArmExtendType _type, uint32_t _shiftAmt);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -450,9 +448,9 @@ def template LoadStoreRegU64Declare {{
                 bool noAlloc = false, bool exclusive = false,
                 bool acrel = false);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -470,9 +468,9 @@ def template LoadStoreRaw64Declare {{
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _base);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -490,9 +488,9 @@ def template LoadStoreEx64Declare {{
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        IntRegIndex _base, IntRegIndex _result);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -509,9 +507,9 @@ def template LoadStoreLit64Declare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest, int64_t _imm);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
@@ -530,9 +528,9 @@ def template LoadStoreLitU64Declare {{
                 bool noAlloc = false, bool exclusive = false,
                 bool acrel = false);
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
 
         virtual void
         annotateFault(ArmFault *fault) {
index d661b4f182a3461324d9dd7b5b05032797bcb373..0a23ba5d32d3bcc4f16bf0143e644c0235e132ee 100644 (file)
@@ -44,7 +44,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -73,7 +73,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                        uint8_t _sysM, bool _r);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -104,7 +104,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1,
                        uint8_t _sysM, bool _r);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -132,7 +132,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1, uint8_t mask);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -158,7 +158,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, uint32_t imm, uint8_t mask);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -185,7 +185,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, MiscRegIndex _op1,
                        IntRegIndex _dest, IntRegIndex _dest2, uint32_t imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -215,7 +215,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _op1, IntRegIndex _op2,
                        MiscRegIndex _dest, uint32_t imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -244,7 +244,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -268,7 +268,7 @@ class %(class_name)s : public %(base_class)s
     public:
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest, uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -294,7 +294,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -321,7 +321,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
                        uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -352,7 +352,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1,
                        IntRegIndex _op2, IntRegIndex _op3);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -382,7 +382,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -412,7 +412,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1,
                        uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -442,7 +442,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        MiscRegIndex _dest, IntRegIndex _op1,
                        uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -472,7 +472,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, MiscRegIndex _op1,
                        uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -501,7 +501,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -531,7 +531,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1,
                        uint64_t _imm1, uint64_t _imm2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -561,7 +561,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -591,7 +591,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, uint64_t _imm, IntRegIndex _op1,
                        int32_t _shiftAmt, ArmShiftType _shiftType);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index 3ccb3dc17bc1da865ecdd86765fb6091cf7992fa..842997902a593230b64b0cf1de296c10bf182341 100644 (file)
@@ -46,7 +46,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1,
                        uint64_t _imm1, uint64_t _imm2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -72,7 +72,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _dest, IntRegIndex _op1,
                        IntRegIndex _op2, uint64_t _imm);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index 0099e5c9d10cb2339af3c2a561c4d85571fb791a..87d96f7438b28b1abf707890a21620b7e1da5688 100644 (file)
@@ -44,7 +44,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _reg0,
                        IntRegIndex _reg1, IntRegIndex _reg2);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -73,7 +73,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst,
                        IntRegIndex _reg0, IntRegIndex _reg1,
                        IntRegIndex _reg2, IntRegIndex _reg3);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index c1ec7413526eabd85f2804119902de385cae4c70..5cde08dcf81d42ee013835e06d58443f75741f20 100644 (file)
@@ -71,7 +71,7 @@ class %(class_name)s : public %(base_class)s
         }
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -97,7 +97,7 @@ class %(class_name)s : public %(base_class)s
         }
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -122,7 +122,7 @@ class %(class_name)s : public %(base_class)s
         }
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -145,7 +145,7 @@ class %(class_name)s : public %(base_class)s
         }
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -170,7 +170,7 @@ class %(class_name)s : public %(base_class)s
         }
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index f11ee91d48690e4ca2c03c4c552e44fd9aef6544..15393361120d04a43f724d8f0928cbfbfb0de19b 100644 (file)
@@ -58,7 +58,7 @@ class %(class_name)s : public %(base_class)s
         %(constructor)s;
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -79,7 +79,7 @@ class %(class_name)s : public %(base_class)s
         %(constructor)s;
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -99,7 +99,7 @@ class %(class_name)s : public %(base_class)s
         %(constructor)s;
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -119,7 +119,7 @@ class %(class_name)s : public %(base_class)s
         %(constructor)s;
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -140,7 +140,7 @@ class %(class_name)s : public %(base_class)s
         %(constructor)s;
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -160,7 +160,7 @@ class %(class_name)s : public %(base_class)s
         %(constructor)s;
     }
 
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -267,9 +267,9 @@ def template MicroNeonMemDeclare64 {{
             %(constructor)s;
         }
 
-        %(BasicExecDeclare)s
-        %(InitiateAccDeclare)s
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -420,7 +420,6 @@ def template VMemMultDeclare64 {{
         %(class_name)s(ExtMachInst machInst, RegIndex rn, RegIndex vd,
                        RegIndex rm, uint8_t eSize, uint8_t dataSize,
                        uint8_t numStructElems, uint8_t numRegs, bool wb);
-        %(BasicExecPanic)s
     };
 }};
 
@@ -433,7 +432,6 @@ def template VMemSingleDeclare64 {{
                        RegIndex rm, uint8_t eSize, uint8_t dataSize,
                        uint8_t numStructElems, uint8_t index, bool wb,
                        bool replicate = false);
-        %(BasicExecPanic)s
     };
 }};
 
@@ -479,7 +477,7 @@ def template MicroNeonMixDeclare64 {{
             %(constructor)s;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -498,7 +496,7 @@ def template MicroNeonMixLaneDeclare64 {{
             %(constructor)s;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index fb0a404cb8629f41bed03b0f2a4ea83a86085e09..d2060a7cdae74cdd606c46d80e9049108172552c 100644 (file)
@@ -57,7 +57,7 @@ class %(class_name)s : public %(base_class)s
         // Constructor
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                 IntRegIndex _op1, uint32_t _imm, bool _rotC=true);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -96,7 +96,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                 IntRegIndex _op1, IntRegIndex _op2,
                 int32_t _shiftAmt, ArmShiftType _shiftType);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -141,7 +141,7 @@ class %(class_name)s : public %(base_class)s
         %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
                 IntRegIndex _op1, IntRegIndex _op2, IntRegIndex _shift,
                 ArmShiftType _shiftType);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index d94f4652a7ef30af7705801bc3fa7d58e0da4a45..c5765f21e6e0ed965e819e21d15b44ead3aeeac4 100644 (file)
@@ -105,7 +105,7 @@ class %(class_name)s : public %(base_class)s
     %(class_name)s(ExtMachInst machInst,
                    IntRegIndex _dest, IntRegIndex _op1,
                    VfpMicroMode mode = VfpNotAMicroop);
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -132,7 +132,7 @@ class %(class_name)s : public %(base_class)s
     // Constructor
     %(class_name)s(ExtMachInst machInst, IntRegIndex _dest,
             uint64_t _imm, VfpMicroMode mode = VfpNotAMicroop);
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -159,7 +159,7 @@ class %(class_name)s : public %(base_class)s
     %(class_name)s(ExtMachInst machInst,
                    IntRegIndex _dest, IntRegIndex _op1,
                    uint64_t _imm, VfpMicroMode mode = VfpNotAMicroop);
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -189,7 +189,7 @@ class %(class_name)s : public %(base_class)s
     %(class_name)s(ExtMachInst machInst,
                    IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
                    VfpMicroMode mode = VfpNotAMicroop);
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
@@ -220,7 +220,7 @@ class %(class_name)s : public %(base_class)s
                    IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
                   ConditionCode _cond,
                    VfpMicroMode mode = VfpNotAMicroop);
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index ea76472f59ff123f3d1068f66be5ef7eeff726ac..64932336fa154826e99bb57669097525bd17a706 100644 (file)
@@ -92,7 +92,7 @@ class %(class_name)s : public %(base_class)s
     %(class_name)s(ExtMachInst machInst,
                    IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2,
                    IntRegIndex _op3, VfpMicroMode mode = VfpNotAMicroop);
-    %(BasicExecDeclare)s
+    Fault execute(ExecContext *, Trace::InstRecord *) const;
 };
 }};
 
index 7431b94f51612a2f39e4af1596230d97c2cc7179..b824fda18cd3994e6c4906ba5548a556b36f6b30 100644 (file)
 // Authors: Steve Reinhardt
 //          Korey Sewell
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-        Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
         /**
@@ -46,7 +41,7 @@ def template BasicDeclare {{
           public:
                 /// Constructor.
                 %(class_name)s(MachInst machInst);
-                %(BasicExecDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
         };
 }};
 
index 9e5f538e6044622a70c48ac9f3b426aefbfea4b6..671c7643d8c660753be78cae0a8c3de90c4fec02 100644 (file)
@@ -142,28 +142,13 @@ def template LoadStoreDeclare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst);
 
-        %(BasicExecDeclare)s
-
-        %(EACompDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault eaComp(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(Packet *, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
-def template EACompDeclare {{
-    Fault eaComp(ExecContext *, Trace::InstRecord *) const;
-}};
-
-def template InitiateAccDeclare {{
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
-
-def template CompleteAccDeclare {{
-    Fault completeAcc(Packet *, ExecContext *, Trace::InstRecord *) const;
-}};
 
 def template LoadStoreConstructor {{
     %(class_name)s::%(class_name)s(ExtMachInst machInst)
index 17c653f14b37bc34944574be3914de077a19aa3a..f33c1130c6fa558827de5200b2bb7d0dd45bd08a 100644 (file)
@@ -56,7 +56,7 @@ output header {{
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 6f573b6675b834d8e245ecff18d61ae440734d85..fb0051b4fa0e54192c7052bec773e975d273171c 100644 (file)
@@ -53,7 +53,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -70,7 +70,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -87,7 +87,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -104,7 +104,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -135,7 +135,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index fb29eea4b4686e5baef33fec7094e48d3478ffa4..65fd18f7a8d619d9a2e94f52655d1bc288fc7c9f 100644 (file)
@@ -51,7 +51,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index e1885fa1b25a2745502c4acd785f82d9d4fe4fbe..8adce1c7b434ca32c002ff747aab4f44eecfe000 100644 (file)
 //
 // Authors: Timothy M. Jones
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-        Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
         /**
@@ -43,7 +38,7 @@ def template BasicDeclare {{
           public:
                 /// Constructor.
                 %(class_name)s(ExtMachInst machInst);
-                %(BasicExecDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
         };
 }};
 
@@ -86,14 +81,6 @@ def template BasicDecodeWithMnemonic {{
         return new %(class_name)s("%(mnemonic)s", machInst);
 }};
 
-// Definitions of execute methods that panic.
-def template BasicExecPanic {{
-Fault execute(ExecContext *, Trace::InstRecord *) const
-{
-        panic("Execute method called when it shouldn't!");
-}
-}};
-
 // The most basic instruction format...
 def format BasicOp(code, *flags) {{
         iop = InstObjParams(name, Name, 'PowerStaticInst', code, flags)
index ca2d404f85d7d89318e6942579591347f6455f6a..8f89bc208adc69fbeaf1290b410323bc45c2020d 100644 (file)
@@ -44,25 +44,13 @@ def template LoadStoreDeclare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
 
-def template InitiateAccDeclare {{
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
-
-def template CompleteAccDeclare {{
-    Fault completeAcc(PacketPtr,  ExecContext *, Trace::InstRecord *) const;
-}};
-
-
 def template LoadStoreConstructor {{
     %(class_name)s::%(class_name)s(ExtMachInst machInst)
          : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
index 241e6218b201b1cca1aa68ad4002cddeb9ffa9e1..f9af7f0fc59b3501b3edb62c9b8766dc6e74288e 100644 (file)
@@ -55,7 +55,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -86,7 +86,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index 9f08bc1ee4694235a39bcafd075bd85ef0cf38f1..f8cd3bf43035c13e94869ec0b1ee5004190b26e7 100644 (file)
@@ -53,7 +53,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
diff --git a/src/arch/riscv/isa/base.isa b/src/arch/riscv/isa/base.isa
deleted file mode 100644 (file)
index d54d794..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-// -*- mode:c++ -*-
-
-// Copyright (c) 2015 RISC-V Foundation
-// Copyright (c) 2016 The University of Virginia
-// 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: Maxwell Walter
-//          Alec Roelke
-
-////////////////////////////////////////////////////////////////////
-//
-// Base class for Riscv instructions, and some support functions
-//
-
-//Outputs to decoder.hh
-output header {{
-    using namespace RiscvISA;
-
-    /**
-     * Base class for all RISC-V static instructions.
-     */
-    class RiscvStaticInst : public StaticInst
-    {
-      protected:
-        // Constructor
-        RiscvStaticInst(const char *mnem, MachInst _machInst,
-            OpClass __opClass) : StaticInst(mnem, _machInst, __opClass)
-        {}
-
-        virtual std::string
-        generateDisassembly(Addr pc, const SymbolTable *symtab) const = 0;
-
-      public:
-        void
-        advancePC(RiscvISA::PCState &pc) const
-        {
-            pc.advance();
-        }
-    };
-}};
index 983c1f4ccc46c2b4efdd8cf4ff23bbba01e71e35..80a5faa19034c9a6c59348aa841c117f96370c16 100644 (file)
@@ -148,13 +148,11 @@ def template AtomicMemOpDeclare {{
             // Constructor
             %(class_name)sLoad(ExtMachInst machInst, %(class_name)s *_p);
 
-            %(BasicExecDeclare)s
-
-            %(EACompDeclare)s
-
-            %(InitiateAccDeclare)s
-
-            %(CompleteAccDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
+            Fault eaComp(ExecContext *, Trace::InstRecord *) const;
+            Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+            Fault completeAcc(PacketPtr, ExecContext *,
+                              Trace::InstRecord *) const;
         };
 
         class %(class_name)sStore : public %(base_class)sMicro
@@ -163,13 +161,11 @@ def template AtomicMemOpDeclare {{
             // Constructor
             %(class_name)sStore(ExtMachInst machInst, %(class_name)s *_p);
 
-            %(BasicExecDeclare)s
-
-            %(EACompDeclare)s
-
-            %(InitiateAccDeclare)s
-
-            %(CompleteAccDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
+            Fault eaComp(ExecContext *, Trace::InstRecord *) const;
+            Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+            Fault completeAcc(PacketPtr, ExecContext *,
+                              Trace::InstRecord *) const;
         };
     };
 }};
index 2d27fd8b597d95f3fb03f8be4ca2dff60e283886..bb8401e3d5d6df19f3f8f89cf727e44459bd3999 100644 (file)
 // Authors: Maxwell Walter
 //          Alec Roelke
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-    Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
     //
@@ -45,7 +40,7 @@ def template BasicDeclare {{
       public:
         /// Constructor.
         %(class_name)s(MachInst machInst);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
         using %(base_class)s::generateDisassembly;
     };
 }};
index 5f469dc8d5194bcb57c45a75d8c4f2e573005436..bce76c4d52991abd2cb5a30a58dac5b6c68acfcc 100644 (file)
@@ -109,31 +109,13 @@ def template LoadStoreDeclare {{
         /// Constructor.
         %(class_name)s(ExtMachInst machInst);
 
-        %(BasicExecDeclare)s
-
-        %(EACompDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault eaComp(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
-def template EACompDeclare {{
-    Fault
-    eaComp(ExecContext *, Trace::InstRecord *) const;
-}};
-
-def template InitiateAccDeclare {{
-    Fault
-    initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
-
-def template CompleteAccDeclare {{
-    Fault
-    completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
-}};
 
 def template LoadStoreConstructor {{
     %(class_name)s::%(class_name)s(ExtMachInst machInst):
index 70d6ada33e2d8a38dd13095ee649959092a2778f..35c3fa878bc8ff69cd0e88be55172f594913b229 100644 (file)
@@ -184,7 +184,7 @@ def template ImmDeclare {{
       public:
         /// Constructor.
         %(class_name)s(MachInst machInst);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
         std::string generateDisassembly(Addr pc,
             const SymbolTable *symtab) const override;
     };
@@ -240,7 +240,7 @@ def template BranchDeclare {{
       public:
         /// Constructor.
         %(class_name)s(MachInst machInst);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const override;
@@ -299,7 +299,7 @@ def template JumpDeclare {{
       public:
         /// Constructor.
         %(class_name)s(MachInst machInst);
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const override;
index aaab21137480c4e9da3a586fd7a02cf3c8f1e67b..b6d76497d1f032a57c75bf13620a9764894995ee 100644 (file)
@@ -51,7 +51,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index 82d1794fde6e0a2b00a1a3aae08de605502a97e1..c172d03000ac7d2c4898cf3af7f97e6055649ab5 100644 (file)
@@ -42,6 +42,7 @@ output header {{
 #include <tuple>
 #include <vector>
 
+#include "arch/riscv/static_inst.hh"
 #include "cpu/static_inst.hh"
 #include "mem/packet.hh"
 #include "mem/request.hh"
index 58ec2234118d1cc640a2223d8392dcfee70340a1..3ffb3e6b402b6a64c803244d6b1e6e9d1ccdcc41 100644 (file)
@@ -53,12 +53,6 @@ namespace RiscvISA;
 //Include the operand_types and operand definitions
 ##include "operands.isa"
 
-//Include the base class for riscv instructions, and some support code
-##include "base.isa"
-
-// Include the base class for instructions with micro code
-##include "micro.isa"
-
 //Include the definitions for the instruction formats
 ##include "formats/formats.isa"
 
diff --git a/src/arch/riscv/isa/micro.isa b/src/arch/riscv/isa/micro.isa
deleted file mode 100644 (file)
index 61be076..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-// -*- mode:c++ -*-
-
-// Copyright (c) 2015 Riscv Developers
-// Copyright (c) 2016 The University of Virginia
-// 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: Alec Roelke
-
-def template MacroInitiateAcc {{
-    Fault initiateAcc(ExecContext *xc, Trace::InstRecord *traceData) const
-    {
-        panic("Tried to execute a macroop directly!\n");
-        return NoFault;
-    }
-}};
-
-def template MacroCompleteAcc {{
-    Fault completeAcc(PacketPtr pkt, ExecContext *xc,
-        Trace::InstRecord *traceData) const
-    {
-        panic("Tried to execute a macroop directly!\n");
-        return NoFault;
-    }
-}};
-
-def template MacroExecute {{
-    Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const
-    {
-        panic("Tried to execute a macroop directly!\n");
-        return NoFault;
-    }
-}};
-
-output header {{
-    /**
-     * Base class for all RISC-V Macroops
-     */
-    class RiscvMacroInst : public RiscvStaticInst
-    {
-    protected:
-        std::vector<StaticInstPtr> microops;
-
-        // Constructor
-        RiscvMacroInst(const char *mnem, ExtMachInst _machInst,
-            OpClass __opClass)
-                : RiscvStaticInst(mnem, _machInst, __opClass)
-        {
-            flags[IsMacroop] = true;
-        }
-
-        ~RiscvMacroInst()
-        {
-            microops.clear();
-        }
-
-        StaticInstPtr fetchMicroop(MicroPC upc) const
-        {
-            return microops[upc];
-        }
-
-        %(MacroInitiateAcc)s
-
-        %(MacroCompleteAcc)s
-
-        %(MacroExecute)s
-    };
-
-    /**
-     * Base class for all RISC-V Microops
-     */
-    class RiscvMicroInst : public RiscvStaticInst
-    {
-    protected:
-        // Constructor
-        RiscvMicroInst(const char *mnem, ExtMachInst _machInst,
-            OpClass __opClass)
-                : RiscvStaticInst(mnem, _machInst, __opClass)
-        {
-            flags[IsMicroop] = true;
-        }
-
-        void advancePC(RiscvISA::PCState &pcState) const
-        {
-            if (flags[IsLastMicroop]) {
-                pcState.uEnd();
-            } else {
-                pcState.uAdvance();
-            }
-        }
-    };
-}};
diff --git a/src/arch/riscv/static_inst.hh b/src/arch/riscv/static_inst.hh
new file mode 100644 (file)
index 0000000..bdcdee7
--- /dev/null
@@ -0,0 +1,139 @@
+// -*- mode:c++ -*-
+
+// Copyright (c) 2015 RISC-V Foundation
+// Copyright (c) 2016 The University of Virginia
+// 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: Maxwell Walter
+//          Alec Roelke
+
+#ifndef __ARCH_RISCV_STATIC_INST_HH__
+#define __ARCH_RISCV_STATIC_INST_HH__
+
+////////////////////////////////////////////////////////////////////
+//
+// Base class for Riscv instructions, and some support functions
+//
+
+namespace RiscvISA {
+
+/**
+ * Base class for all RISC-V static instructions.
+ */
+class RiscvStaticInst : public StaticInst
+{
+  protected:
+    // Constructor
+    RiscvStaticInst(const char *mnem, MachInst _machInst,
+        OpClass __opClass) : StaticInst(mnem, _machInst, __opClass)
+    {}
+
+    virtual std::string
+    generateDisassembly(Addr pc, const SymbolTable *symtab) const = 0;
+
+  public:
+    void
+    advancePC(RiscvISA::PCState &pc) const
+    {
+        pc.advance();
+    }
+};
+
+/**
+ * Base class for all RISC-V Macroops
+ */
+class RiscvMacroInst : public RiscvStaticInst
+{
+  protected:
+    std::vector<StaticInstPtr> microops;
+
+    // Constructor
+    RiscvMacroInst(const char *mnem, ExtMachInst _machInst,
+                   OpClass __opClass) :
+            RiscvStaticInst(mnem, _machInst, __opClass)
+    {
+        flags[IsMacroop] = true;
+    }
+
+    ~RiscvMacroInst()
+    {
+        microops.clear();
+    }
+
+    StaticInstPtr
+    fetchMicroop(MicroPC upc) const
+    {
+        return microops[upc];
+    }
+
+    Fault
+    initiateAcc(ExecContext *xc, Trace::InstRecord *traceData) const
+    {
+        panic("Tried to execute a macroop directly!\n");
+    }
+
+    Fault
+    completeAcc(PacketPtr pkt, ExecContext *xc,
+                Trace::InstRecord *traceData) const
+    {
+        panic("Tried to execute a macroop directly!\n");
+    }
+
+    Fault
+    execute(ExecContext *xc, Trace::InstRecord *traceData) const
+    {
+        panic("Tried to execute a macroop directly!\n");
+    }
+};
+
+/**
+ * Base class for all RISC-V Microops
+ */
+class RiscvMicroInst : public RiscvStaticInst
+{
+  protected:
+    // Constructor
+    RiscvMicroInst(const char *mnem, ExtMachInst _machInst,
+                   OpClass __opClass) :
+            RiscvStaticInst(mnem, _machInst, __opClass)
+    {
+        flags[IsMicroop] = true;
+    }
+
+    void
+    advancePC(RiscvISA::PCState &pcState) const
+    {
+        if (flags[IsLastMicroop]) {
+            pcState.uEnd();
+        } else {
+            pcState.uAdvance();
+        }
+    }
+};
+
+}
+
+#endif // __ARCH_RISCV_STATIC_INST_HH__
index a81de05ad80c811aa8cf363c78a6dde659aed9e8..63f3e4a6c7dfc1e25ebd611b70bbbcdb94c35ead 100644 (file)
 //          Gabe Black
 //          Steve Reinhardt
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-        Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
-def template DoFpOpDeclare {{
-        Fault doFpOp(ExecContext *, Trace::InstRecord *)
-            const M5_NO_INLINE;
-}};
-
-// Definitions of execute methods that panic.
-def template BasicExecPanic {{
-        Fault
-        execute(ExecContext *, Trace::InstRecord *) const
-        {
-            panic("Execute method called when it shouldn't!");
-            M5_DUMMY_RETURN
-        }
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
         /**
@@ -58,7 +38,7 @@ def template BasicDeclare {{
           public:
             // Constructor.
             %(class_name)s(ExtMachInst machInst);
-            %(BasicExecDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
         };
 }};
 
@@ -72,8 +52,9 @@ def template FpBasicDeclare {{
           public:
             // Constructor.
             %(class_name)s(ExtMachInst machInst);
-            %(BasicExecDeclare)s
-            %(DoFpOpDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
+            Fault doFpOp(ExecContext *,
+                         Trace::InstRecord *) const M5_NO_INLINE;
         };
 }};
 
@@ -87,7 +68,7 @@ def template BasicDeclareWithMnemonic {{
           public:
             // Constructor.
             %(class_name)s(const char * mnemonic, ExtMachInst machInst);
-            %(BasicExecDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
         };
 }};
 
index 5dcb955e364cd3e4feb93086a17c797e3c082682..391063cf8e69c7758085e1e485563c796ee42cdf 100644 (file)
@@ -45,13 +45,11 @@ def template MemDeclare {{
             /// Constructor.
             %(class_name)s(ExtMachInst machInst);
 
-            %(BasicExecDeclare)s
-
-            %(EACompDeclare)s
-
-            %(InitiateAccDeclare)s
-
-            %(CompleteAccDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
+            Fault eaComp(ExecContext *, Trace::InstRecord *) const;
+            Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+            Fault completeAcc(PacketPtr, ExecContext *,
+                              Trace::InstRecord *) const;
         };
 }};
 
index 03b395b12cf46915058410133d5a661922b78087..3e3aabfcb9e370de384e1d213176f6fa4518d7ec 100644 (file)
@@ -161,9 +161,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_0(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_1 : public %(base_class)sMicro
@@ -171,9 +172,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_1(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_2 : public %(base_class)sMicro
@@ -181,9 +183,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_2(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_3 : public %(base_class)sMicro
@@ -191,9 +194,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_3(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_4 : public %(base_class)sMicro
@@ -201,9 +205,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_4(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_5 : public %(base_class)sMicro
@@ -211,9 +216,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_5(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_6 : public %(base_class)sMicro
@@ -221,9 +227,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_6(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
 
             class %(class_name)s_7 : public %(base_class)sMicro
@@ -231,9 +238,10 @@ def template BlockMemDeclare {{
               public:
                 // Constructor
                 %(class_name)s_7(ExtMachInst machInst);
-                %(BasicExecDeclare)s
-                %(InitiateAccDeclare)s
-                %(CompleteAccDeclare)s
+                Fault execute(ExecContext *, Trace::InstRecord *) const;
+                Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+                Fault completeAcc(PacketPtr, ExecContext *,
+                                  Trace::InstRecord *) const;
             };
         };
 }};
index ff14f060fe540595499e3f012acb8936a35fd467..4d7fc06088f1f9855d95babfa900e0c0e14eded7 100644 (file)
@@ -280,15 +280,6 @@ def template EACompExecute {{
     }
 }};
 
-def template EACompDeclare {{
-    Fault eaComp(ExecContext *, Trace::InstRecord *) const;
-}};
-
-// This delcares the initiateAcc function in memory operations
-def template InitiateAccDeclare {{
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
 // This declares the completeAcc function in memory operations
 def template CompleteAccDeclare {{
     Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
index c57d9346d982ce317e8040a04de47c40e9bd20bd..f9c4ebd6c6230fc7d2c44f4e9106f79a889d3d78 100644 (file)
 //
 // Authors: Gabe Black
 
-// This delcares the initiateAcc function in memory operations
-def template MacroInitiateAcc {{
-    Fault
-    initiateAcc(ExecContext *, Trace::InstRecord *) const
-    {
-        panic("Tried to execute a macroop directly!\n");
-        return NoFault;
-    }
-}};
-
-def template MacroCompleteAcc {{
-    Fault
-    completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const
-    {
-        panic("Tried to execute a macroop directly!\n");
-        return NoFault;
-    }
-}};
-
-// This template provides the execute functions for a store
-def template MacroExecute {{
-    Fault
-    execute(ExecContext *, Trace::InstRecord *) const
-    {
-        panic("Tried to execute a macroop directly!\n");
-        return NoFault;
-    }
-}};
-
 output header {{
 
         class SparcMacroInst : public SparcStaticInst
@@ -90,9 +61,23 @@ output header {{
                 return microops[upc];
             }
 
-            %(MacroExecute)s
-            %(MacroInitiateAcc)s
-            %(MacroCompleteAcc)s
+            Fault
+            execute(ExecContext *, Trace::InstRecord *) const
+            {
+                panic("Tried to execute a macroop directly!\n");
+            }
+
+            Fault
+            initiateAcc(ExecContext *, Trace::InstRecord *) const
+            {
+                panic("Tried to execute a macroop directly!\n");
+            }
+
+            Fault
+            completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const
+            {
+                panic("Tried to execute a macroop directly!\n");
+            }
         };
 
         class SparcMicroInst : public SparcStaticInst
index e725f49b05a8fa2830e48e1b6179938b5a57dbad..d1257907fbf2a836ee3b388c1f3826c0387d5289 100644 (file)
 
 // Per-cpu-model nop execute method.
 def template NopExec {{
-
-    Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const
-    {
-        // Nothing to see here, move along
-        return NoFault;
-    }
 }};
 
 output header {{
@@ -56,12 +50,11 @@ output header {{
                 flags[IsNop] = true;
             }
 
-            // All Nop instructions do the same thing, so this can be
-            // defined here. Nops can be defined directly, so there
-            // needs to be a default implementation.  Interpolate via
-            // template so i gets expanded to a set of
-            // cpu-model-specific functions.
-            %(NopExec)s
+            Fault
+            execute(ExecContext *xc, Trace::InstRecord *traceData) const
+            {
+                return NoFault;
+            }
 
             std::string generateDisassembly(Addr pc,
                     const SymbolTable *symtab) const;
index f612b8bc65a47a520b990b23d6596765b366cd66..aa03c926e1bd502e6da017a4d79da5751b083e4d 100644 (file)
@@ -53,7 +53,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -84,7 +84,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index 226f0191e9af285ed0ee05ffaf60e14155032d5e..f6f9e878b48cf795e544aeedd27de09a49c5956b 100644 (file)
@@ -46,7 +46,7 @@ output header {{
             {
             }
 
-            %(BasicExecDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
 
             std::string generateDisassembly(Addr pc,
                     const SymbolTable *symtab) const;
index af540962bddc6ad1793cee24df50bc734068294e..2542df8c336a6d8b27b7cc5745fa3f3a76f31401 100644 (file)
 //
 // Authors: Gabe Black
 
-// Declarations for execute() methods.
-def template BasicExecDeclare {{
-        Fault execute(ExecContext *, Trace::InstRecord *) const;
-}};
-
-// Definitions of execute methods that panic.
-def template BasicExecPanic {{
-        Fault execute(ExecContext *, Trace::InstRecord *) const
-        {
-            panic("Execute method called when it shouldn't!");
-            M5_DUMMY_RETURN
-        }
-}};
-
 // Basic instruction class declaration template.
 def template BasicDeclare {{
         /**
@@ -62,7 +48,7 @@ def template BasicDeclare {{
           public:
             // Constructor.
             %(class_name)s(ExtMachInst machInst);
-            %(BasicExecDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
         };
 }};
 
index 5e68b8738a4311635300f9797a76ac43dd8b86d2..9ceb129a63a3997d01868f11bcb86b269aee483a 100644 (file)
@@ -45,20 +45,15 @@ def format MonitorInst(code, *opt_flags) {{
 
 // Mwait instruction
 
-// Declarations for execute() methods.
-def template MwaitExecDeclare {{
-    Fault execute(ExecContext *, Trace::InstRecord *) const;
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-    Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
-}};
-
 def template MwaitDeclare {{
     class %(class_name)s : public %(base_class)s
     {
         public:
         // Constructor.
         %(class_name)s(ExtMachInst machInst);
-        %(MwaitExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index ee0600dfd915450ba110891251fa1cc5b436caf7..963e07c77352815e988c31d981357e47e09d3ded 100644 (file)
@@ -62,7 +62,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
@@ -93,7 +93,7 @@ output header {{
             flags[IsNonSpeculative] = true;
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string
         generateDisassembly(Addr pc, const SymbolTable *symtab) const;
index 769ffb7b8f12007d0cca25178d87263ac5ec08c2..a5c48fce1dff84ed1414404fb6d7501ef1957ac3 100644 (file)
@@ -57,7 +57,7 @@ output header {{
             {
             }
 
-            %(BasicExecDeclare)s
+            Fault execute(ExecContext *, Trace::InstRecord *) const;
 
             std::string generateDisassembly(Addr pc,
                     const SymbolTable *symtab) const;
index 99faa2e03819e9e6f89e7b83148b8be46aa92d00..3a1a84a7db7b2bc62b0d9d470439b0b8bea3930f 100644 (file)
@@ -61,7 +61,12 @@ output header {{
                     uint32_t _numMicroops, X86ISA::EmulEnv _env)
                         : MacroopBase(mnem, _machInst, _numMicroops, _env)
             {}
-            %(MacroExecPanic)s
+
+            Fault
+            execute(ExecContext *, Trace::InstRecord *) const
+            {
+                panic("Tried to execute macroop directly!");
+            }
         };
 }};
 
index 87e7879f1fd9943cb9322d5209df010a7a352537..6852f6826fa96351d4e55034e4e4bfd869e33229 100644 (file)
@@ -78,7 +78,7 @@ def template MicroDebugDeclare {{
         %(class_name)s(ExtMachInst _machInst, const char * instMnem,
                 uint64_t setFlags, std::string _message, uint8_t _cc);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 5973c7d06dd9b3dcc6f64171d9926553fd147ce5..65c2fdb5704ef679b9ce1799ca29eeb81c0f4047 100644 (file)
@@ -85,7 +85,7 @@ def template MicroFpOpDeclare {{
                 InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
                 uint8_t _dataSize, int8_t _spm);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 2f1c267a2393926365c3094d393a42db2fad4899..5ff4f0cead35279423152f3a91227921e64611a5 100644 (file)
@@ -81,7 +81,7 @@ def template MicroLeaDeclare {{
                 uint8_t _dataSize, uint8_t _addressSize,
                 Request::FlagsType _memFlags);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -223,18 +223,6 @@ def template MicroStoreCompleteAcc {{
     }
 }};
 
-// Common templates
-
-//This delcares the initiateAcc function in memory operations
-def template InitiateAccDeclare {{
-    Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
-}};
-
-//This declares the completeAcc function in memory operations
-def template CompleteAccDeclare {{
-    Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
-}};
-
 def template MicroLdStOpDeclare {{
     class %(class_name)s : public %(base_class)s
     {
@@ -247,11 +235,9 @@ def template MicroLdStOpDeclare {{
                 uint8_t _dataSize, uint8_t _addressSize,
                 Request::FlagsType _memFlags);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -269,11 +255,9 @@ def template MicroLdStSplitOpDeclare {{
                 uint8_t _dataSize, uint8_t _addressSize,
                 Request::FlagsType _memFlags);
 
-        %(BasicExecDeclare)s
-
-        %(InitiateAccDeclare)s
-
-        %(CompleteAccDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
+        Fault initiateAcc(ExecContext *, Trace::InstRecord *) const;
+        Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index ac0438ae0c9a0e9958f9af7eee5cda8a4fcba1b3..fce12d2a49a14080cacb3605515cfe631b2f4c9d 100644 (file)
@@ -71,7 +71,7 @@ def template MicroLimmOpDeclare {{
                 uint64_t setFlags, InstRegIndex _dest,
                 uint64_t _imm, uint8_t _dataSize);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 19bbc639249e3b934a8bc93bb2dc2b5833f82dd0..7e28bc27709abe1bddd8f148252096bb15e07e3c 100644 (file)
@@ -57,7 +57,7 @@ def template MediaOpRegDeclare {{
                 InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
                 uint8_t _srcSize, uint8_t _destSize, uint16_t _ext);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -71,7 +71,7 @@ def template MediaOpImmDeclare {{
                 InstRegIndex _src1, uint16_t _imm8, InstRegIndex _dest,
                 uint8_t _srcSize, uint8_t _destSize, uint16_t _ext);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 2f8fc4dfc214d2f1c1c853f5ac966aff2ee3c113..4fd3b2aa656c57285ba49cc938ab03bdf869622d 100644 (file)
@@ -111,7 +111,7 @@ def template MicroRegOpDeclare {{
                 InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
                 uint8_t _dataSize, uint16_t _ext);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -125,7 +125,7 @@ def template MicroRegOpImmDeclare {{
                 InstRegIndex _src1, uint8_t _imm8, InstRegIndex _dest,
                 uint8_t _dataSize, uint16_t _ext);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 601aa67750446290483ebdade264a264449f83ee..f5cb589f375c0f73958aceeaefe1d1e5f292700f 100644 (file)
@@ -63,7 +63,7 @@ def template SeqOpDeclare {{
         %(class_name)s(ExtMachInst _machInst, const char * instMnem,
                 uint64_t setFlags, uint16_t _target, uint8_t _cc);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
index 2b1d8ba44c9502a66d731bac112c3c0a7d545a80..7bfe22fbca81f48921394d6c78ae42dbcdd12dd6 100644 (file)
@@ -69,7 +69,7 @@ output header {{
         {
         }
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
 
         std::string generateDisassembly(Addr pc,
                 const SymbolTable *symtab) const;
@@ -83,7 +83,7 @@ def template MicroFaultDeclare {{
         %(class_name)s(ExtMachInst _machInst, const char * instMnem,
                 uint64_t setFlags, Fault _fault, uint8_t _cc);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};
 
@@ -214,7 +214,7 @@ def template MicroFenceOpDeclare {{
                 const char * instMnem,
                 uint64_t setFlags);
 
-        %(BasicExecDeclare)s
+        Fault execute(ExecContext *, Trace::InstRecord *) const;
     };
 }};