Merge gblack@m5.eecs.umich.edu:/bk/multiarch
[gem5.git] / kern / kernel_stats.hh
index 7b931ef79089840728d6e0fdf03bcec2f86eb9b7..4896a0705b553c0e46a97851d79131bf31dbf584 100644 (file)
 #include <string>
 #include <vector>
 
+#include "cpu/static_inst.hh"
+
 class BaseCPU;
 class ExecContext;
 class FnEvent;
 // What does kernel stats expect is included?
-class StaticInstBase;
 class System;
-enum Fault;
 
 namespace Kernel {
 
@@ -105,7 +105,7 @@ class Binning
 
     cpu_mode themode;
     void palSwapContext(ExecContext *xc);
-    void execute(ExecContext *xc, const StaticInstBase *inst);
+    void execute(ExecContext *xc, StaticInstPtr inst);
     void call(ExecContext *xc, Stats::MainBin *myBin);
     void changeMode(cpu_mode mode);
 
@@ -123,6 +123,7 @@ class Binning
 
 class Statistics : public Serializable
 {
+  private:
     friend class Binning;
 
   private:
@@ -150,7 +151,7 @@ class Statistics : public Serializable
 
     Stats::Vector<> _callpal;
     Stats::Vector<> _syscall;
-    Stats::Vector<> _faults;
+//    Stats::Vector<> _faults;
 
     Stats::Vector<> _mode;
     Stats::Vector<> _modeGood;
@@ -175,7 +176,11 @@ class Statistics : public Serializable
     void ivlb() { _ivlb++; }
     void ivle() { _ivle++; }
     void hwrei() { _hwrei++; }
-    void fault(Fault fault) { _faults[fault]++; }
+    void fault(Fault fault)
+    {
+            if(fault != NoFault)
+                fault->stat()++;
+    }// FIXME: When there are no generic system fault objects, this will go back to _faults[fault]++; }
     void swpipl(int ipl);
     void mode(cpu_mode newmode);
     void context(Addr oldpcbb, Addr newpcbb);