SE/FS: Get rid of includes of config/full_system.hh.
[gem5.git] / src / kern / kernel_stats.cc
index 2ba120b6f02d580ca8ccd36eef10baeae32eb07f..96e219bd47d9d4e3d1f41d86824d96131987130b 100644 (file)
  *          Nathan Binkert
  */
 
-#include <map>
-#include <stack>
 #include <string>
 
-#include "arch/alpha/osfpal.hh"
 #include "base/trace.hh"
 #include "cpu/thread_context.hh"
 #include "kern/kernel_stats.hh"
+#if THE_ISA == ALPHA_ISA
 #include "kern/tru64/tru64_syscalls.hh"
+#endif
 #include "sim/system.hh"
 
 using namespace std;
@@ -45,13 +44,9 @@ using namespace Stats;
 
 namespace Kernel {
 
-const char *modestr[] = { "kernel", "user", "idle", "interrupt" };
-
 Statistics::Statistics(System *system)
-    : idleProcess((Addr)-1), themode(kernel), lastModeTick(0),
-      iplLast(0), iplLastTick(0)
+    : iplLast(0), iplLastTick(0)
 {
-    bin_int = system->params()->bin_int;
 }
 
 void
@@ -69,21 +64,6 @@ Statistics::regStats(const string &_name)
         .desc("number of quiesce instructions executed")
         ;
 
-    _ivlb
-        .name(name() + ".inst.ivlb")
-        .desc("number of ivlb instructions executed")
-        ;
-
-    _ivle
-        .name(name() + ".inst.ivle")
-        .desc("number of ivle instructions executed")
-        ;
-
-    _hwrei
-        .name(name() + ".inst.hwrei")
-        .desc("number of hwrei instructions executed")
-        ;
-
     _iplCount
         .init(32)
         .name(name() + ".ipl_count")
@@ -112,104 +92,24 @@ Statistics::regStats(const string &_name)
         ;
 
     _iplUsed = _iplGood / _iplCount;
-
-    _callpal
-        .init(256)
-        .name(name() + ".callpal")
-        .desc("number of callpals executed")
-        .flags(total | pdf | nozero | nonan)
-        ;
-
-    for (int i = 0; i < PAL::NumCodes; ++i) {
-        const char *str = PAL::name(i);
-        if (str)
-            _callpal.subname(i, str);
-    }
-
+#if THE_ISA == ALPHA_ISA
     _syscall
         .init(SystemCalls<Tru64>::Number)
         .name(name() + ".syscall")
         .desc("number of syscalls executed")
         .flags(total | pdf | nozero | nonan)
         ;
+#endif
 
+    //@todo This needs to get the names of syscalls from an appropriate place.
+#if 0
     for (int i = 0; i < SystemCalls<Tru64>::Number; ++i) {
         const char *str = SystemCalls<Tru64>::name(i);
         if (str) {
             _syscall.subname(i, str);
         }
     }
-
-    _mode
-        .init(cpu_mode_num)
-        .name(name() + ".mode_switch")
-        .desc("number of protection mode switches")
-        ;
-
-    for (int i = 0; i < cpu_mode_num; ++i)
-        _mode.subname(i, modestr[i]);
-
-    _modeGood
-        .init(cpu_mode_num)
-        .name(name() + ".mode_good")
-        ;
-
-    for (int i = 0; i < cpu_mode_num; ++i)
-        _modeGood.subname(i, modestr[i]);
-
-    _modeFraction
-        .name(name() + ".mode_switch_good")
-        .desc("fraction of useful protection mode switches")
-        .flags(total)
-        ;
-
-    for (int i = 0; i < cpu_mode_num; ++i)
-        _modeFraction.subname(i, modestr[i]);
-
-    _modeFraction = _modeGood / _mode;
-
-    _modeTicks
-        .init(cpu_mode_num)
-        .name(name() + ".mode_ticks")
-        .desc("number of ticks spent at the given mode")
-        .flags(pdf)
-        ;
-    for (int i = 0; i < cpu_mode_num; ++i)
-        _modeTicks.subname(i, modestr[i]);
-
-    _swap_context
-        .name(name() + ".swap_context")
-        .desc("number of times the context was actually changed")
-        ;
-}
-
-void
-Statistics::setIdleProcess(Addr idlepcbb, ThreadContext *tc)
-{
-    assert(themode == kernel || themode == interrupt);
-    idleProcess = idlepcbb;
-    themode = idle;
-    changeMode(themode, tc);
-}
-
-void
-Statistics::changeMode(cpu_mode newmode, ThreadContext *tc)
-{
-    _mode[newmode]++;
-
-    if (newmode == themode)
-        return;
-
-    DPRINTF(Context, "old mode=%-8s new mode=%-8s\n",
-            modestr[themode], modestr[newmode]);
-
-    _modeGood[newmode]++;
-    _modeTicks[themode] += curTick - lastModeTick;
-
-    tc->getSystemPtr()->kernelBinning->changeMode(newmode);
-
-    lastModeTick = curTick;
-    themode = newmode;
+#endif
 }
 
 void
@@ -223,80 +123,23 @@ Statistics::swpipl(int ipl)
         return;
 
     _iplGood[ipl]++;
-    _iplTicks[iplLast] += curTick - iplLastTick;
-    iplLastTick = curTick;
+    _iplTicks[iplLast] += curTick() - iplLastTick;
+    iplLastTick = curTick();
     iplLast = ipl;
 }
 
-void
-Statistics::mode(cpu_mode newmode, ThreadContext *tc)
-{
-    Addr pcbb = tc->readMiscReg(AlphaISA::IPR_PALtemp23);
-
-    if ((newmode == kernel || newmode == interrupt) &&
-            pcbb == idleProcess)
-        newmode = idle;
-
-    if (bin_int == false && newmode == interrupt)
-        newmode = kernel;
-
-    changeMode(newmode, tc);
-}
-
-void
-Statistics::context(Addr oldpcbb, Addr newpcbb, ThreadContext *tc)
-{
-    assert(themode != user);
-
-    _swap_context++;
-    changeMode(newpcbb == idleProcess ? idle : kernel, tc);
-}
-
-void
-Statistics::callpal(int code, ThreadContext *tc)
-{
-    if (!PAL::name(code))
-        return;
-
-    _callpal[code]++;
-
-    switch (code) {
-      case PAL::callsys: {
-          int number = tc->readIntReg(0);
-          if (SystemCalls<Tru64>::validSyscallNumber(number)) {
-              int cvtnum = SystemCalls<Tru64>::convert(number);
-              _syscall[cvtnum]++;
-          }
-      } break;
-
-      case PAL::swpctx:
-        if (tc->getSystemPtr()->kernelBinning)
-            tc->getSystemPtr()->kernelBinning->palSwapContext(tc);
-        break;
-    }
-}
-
 void
 Statistics::serialize(ostream &os)
 {
-    int exemode = themode;
-    SERIALIZE_SCALAR(exemode);
-    SERIALIZE_SCALAR(idleProcess);
     SERIALIZE_SCALAR(iplLast);
     SERIALIZE_SCALAR(iplLastTick);
-    SERIALIZE_SCALAR(lastModeTick);
 }
 
 void
 Statistics::unserialize(Checkpoint *cp, const string &section)
 {
-    int exemode;
-    UNSERIALIZE_SCALAR(exemode);
-    UNSERIALIZE_SCALAR(idleProcess);
     UNSERIALIZE_SCALAR(iplLast);
     UNSERIALIZE_SCALAR(iplLastTick);
-    UNSERIALIZE_SCALAR(lastModeTick);
-    themode = (cpu_mode)exemode;
 }
 
-/* end namespace Kernel */ }
+} // namespace Kernel