Changes to support automatic renaming of the shadow registers at decode time. This...
[gem5.git] / arch / alpha / faults.hh
index fedbadd4d047767ba831c6fa0f2da28b319219e1..156faa8fbe706d3f78564e09dd12272a0ccb5e1e 100644 (file)
@@ -38,32 +38,43 @@ namespace AlphaISA
 
 typedef const Addr FaultVect;
 
-class AlphaFault : public FaultBase
+class AlphaFault : public virtual FaultBase
 {
-  private:
-    static FaultName _name;
-    static FaultVect _vect;
-    static FaultStat _stat;
   public:
-    FaultName name() {return _name;}
-    virtual FaultVect vect() {return _vect;}
-    virtual FaultStat & stat() {return _stat;}
+#if FULL_SYSTEM
+    void ev5_trap(ExecContext * xc);
+#endif
+    virtual FaultVect vect() = 0;
 };
 
-class AlphaMachineCheckFault : public MachineCheckFault
+class AlphaMachineCheckFault :
+    public MachineCheckFault,
+    public AlphaFault
 {
   private:
     static FaultVect _vect;
+    static FaultStat _stat;
   public:
+#if FULL_SYSTEM
+    void ev5_trap(ExecContext * xc);
+#endif
     FaultVect vect() {return _vect;}
+    FaultStat & stat() {return _stat;}
 };
 
-class AlphaAlignmentFault : public AlignmentFault
+class AlphaAlignmentFault :
+    public AlignmentFault,
+    public AlphaFault
 {
   private:
     static FaultVect _vect;
+    static FaultStat _stat;
   public:
+#if FULL_SYSTEM
+    void ev5_trap(ExecContext * xc);
+#endif
     FaultVect vect() {return _vect;}
+    FaultStat & stat() {return _stat;}
 };
 
 static inline Fault genMachineCheckFault()