Moved the UnimpFault to be global
authorGabe Black <gblack@eecs.umich.edu>
Mon, 15 May 2006 03:53:29 +0000 (23:53 -0400)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 15 May 2006 03:53:29 +0000 (23:53 -0400)
--HG--
extra : convert_revision : a42224c70c475c1559e83b8a2ef71ff3b792a3ab

arch/alpha/faults.cc
arch/alpha/faults.hh
arch/mips/faults.cc
arch/mips/faults.hh
arch/sparc/faults.cc
arch/sparc/faults.hh
sim/faults.cc
sim/faults.hh

index c8cb9124e83c33c942744aeebccf8d7464e05ebc..0083aa9f36106e51f3ce100008de25d0b8f29a74 100644 (file)
@@ -105,10 +105,6 @@ FaultName IntegerOverflowFault::_name = "intover";
 FaultVect IntegerOverflowFault::_vect = 0x0501;
 FaultStat IntegerOverflowFault::_count;
 
-FaultName UnimpFault::_name = "Unimplemented Simulator feature";
-FaultVect UnimpFault::_vect = 0x0001;
-FaultStat UnimpFault::_count;
-
 #if FULL_SYSTEM
 
 void AlphaFault::invoke(ExecContext * xc)
@@ -174,12 +170,6 @@ void ItbFault::invoke(ExecContext * xc)
     AlphaFault::invoke(xc);
 }
 
-void UnimpFault::invoke(ExecContext * xc)
-{
-    FaultBase::invoke(xc);
-    panic("Unimpfault: %s\n", panicStr.c_str());
-}
-
 #endif
 
 } // namespace AlphaISA
index 5024c124b3f2007e314e01aa0498888a31044dc3..e8ccc6b79b21ebd26d7c06373e44be69f9c2d188 100644 (file)
@@ -347,26 +347,6 @@ class IntegerOverflowFault : public AlphaFault
     FaultStat & countStat() {return _count;}
 };
 
-class UnimpFault : public AlphaFault
-{
-  private:
-    std::string panicStr;
-    static FaultName _name;
-    static FaultVect _vect;
-    static FaultStat _count;
-  public:
-    UnimpFault(std::string _str)
-        : panicStr(_str)
-    { }
-
-    FaultName name() {return _name;}
-    FaultVect vect() {return _vect;}
-    FaultStat & countStat() {return _count;}
-#if FULL_SYSTEM
-    void invoke(ExecContext * xc);
-#endif
-};
-
 } // AlphaISA namespace
 
 #endif // __FAULTS_HH__
index a31856f07b994a93f689d906cae4e1bd3521cde5..1b31dfa6904b2be74997182e9fc5aefaaf96581d 100644 (file)
@@ -98,10 +98,6 @@ FaultName IntegerOverflowFault::_name = "intover";
 FaultVect IntegerOverflowFault::_vect = 0x0501;
 FaultStat IntegerOverflowFault::_count;
 
-FaultName UnimpFault::_name = "Unimplemented Simulator feature";
-FaultVect UnimpFault::_vect = 0x0001;
-FaultStat UnimpFault::_count;
-
 #if FULL_SYSTEM
 
 void MipsFault::invoke(ExecContext * xc)
@@ -129,12 +125,6 @@ void ArithmeticFault::invoke(ExecContext * xc)
     panic("Arithmetic traps are unimplemented!");
 }
 
-void UnimpFault::invoke(ExecContext * xc)
-{
-    FaultBase::invoke(xc);
-    panic("Unimpfault: %s\n", panicStr.c_str());
-}
-
 #endif
 
 } // namespace MipsISA
index b0d228090ad5b1f8535ef132ec8e04f6843835b5..0bdabe29ec74b848d329d4272a6d33b8ba9649e9 100644 (file)
@@ -264,26 +264,6 @@ class IntegerOverflowFault : public MipsFault
     FaultStat & countStat() {return _count;}
 };
 
-class UnimpFault : public MipsFault
-{
-  private:
-    std::string panicStr;
-    static FaultName _name;
-    static FaultVect _vect;
-    static FaultStat _count;
-  public:
-    UnimpFault(std::string _str)
-        : panicStr(_str)
-    { }
-
-    FaultName name() {return _name;}
-    FaultVect vect() {return _vect;}
-    FaultStat & countStat() {return _count;}
-#if FULL_SYSTEM
-    void invoke(ExecContext * xc);
-#endif
-};
-
 } // MipsISA namespace
 
 #endif // __FAULTS_HH__
index e83bba8003a28dfb3b321230fbddf9973903d293..67a89ab0ec0433eca53cba32b59ce3cc2deb0a8d 100644 (file)
@@ -215,11 +215,6 @@ TrapType      TrapInstruction::_baseTrapType = 0x100;
 FaultPriority TrapInstruction::_priority = 16;
 FaultStat     TrapInstruction::_count;
 
-FaultName     UnimpFault::_name = "Unimplemented Simulator feature";
-TrapType      UnimpFault::_trapType = 0x000;
-FaultPriority UnimpFault::_priority = 0;
-FaultStat     UnimpFault::_count;
-
 #if FULL_SYSTEM
 
 void SparcFault::invoke(ExecContext * xc)
@@ -245,12 +240,15 @@ void SparcFault::invoke(ExecContext * xc)
     xc->regs.npc = xc->regs.pc + sizeof(MachInst);*/
 }
 
-void UnimpFault::invoke(ExecContext * xc)
+#endif
+
+#if !FULL_SYSTEM
+
+void TrapInstruction::invoke(ExecContext * xc)
 {
-    panic("Unimpfault: %s\n", panicStr.c_str());
+    xc->syscall(syscall_num);
 }
 
-
 #endif
 
 } // namespace SparcISA
index 87de8daaa3926944abb2f70aa75e42df3c094681..e8fb8dfc5803ea6ee8b93e93317fe1bb8e22b160 100644 (file)
@@ -573,37 +573,19 @@ class TrapInstruction : public EnumeratedFault
     static TrapType _baseTrapType;
     static FaultPriority _priority;
     static FaultStat _count;
+    uint64_t syscall_num;
     TrapType baseTrapType() {return _baseTrapType;}
   public:
-    TrapInstruction(uint32_t n) : EnumeratedFault(n) {;}
+    TrapInstruction(uint32_t n, uint64_t syscall) :
+        EnumeratedFault(n), syscall_num(syscall) {;}
     FaultName name() {return _name;}
     FaultPriority priority() {return _priority;}
     FaultStat & countStat() {return _count;}
-};
-
-class UnimpFault : public SparcFault
-{
-  private:
-    static FaultName _name;
-    static TrapType _trapType;
-    static FaultPriority _priority;
-    static FaultStat _count;
-    std::string panicStr;
-  public:
-    UnimpFault(std::string _str)
-        : panicStr(_str)
-    { }
-
-    FaultName name() {return _name;}
-    TrapType trapType() {return _trapType;}
-    FaultPriority priority() {return _priority;}
-    FaultStat & countStat() {return _count;}
-#if FULL_SYSTEM
+#if !FULL_SYSTEM
     void invoke(ExecContext * xc);
 #endif
 };
 
-
 } // SparcISA namespace
 
 #endif // __FAULTS_HH__
index f7e9a0691365d00d9749708d9ced16ea15c413d2..cb095f852226c9a8ca5b58076a2a08cc78c1147f 100644 (file)
@@ -45,3 +45,8 @@ void FaultBase::invoke(ExecContext * xc)
     assert(!xc->misspeculating());
 }
 #endif
+
+void UnimpFault::invoke(ExecContext * xc)
+{
+    panic("Unimpfault: %s\n", panicStr.c_str());
+}
index 18601e8f17fecf5e7a49fd90901096a7d7794f78..9b3bc91037b8e3ceb20f89c293ea586726a5bbde 100644 (file)
@@ -64,4 +64,17 @@ class FaultBase : public RefCounted
 
 FaultBase * const NoFault = 0;
 
+class UnimpFault : public FaultBase
+{
+  private:
+    std::string panicStr;
+  public:
+    UnimpFault(std::string _str)
+        : panicStr(_str)
+    { }
+
+    FaultName name() {return "Unimplemented simulator feature";}
+    void invoke(ExecContext * xc);
+};
+
 #endif // __FAULTS_HH__