summaryrefslogtreecommitdiff
path: root/cpu
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2006-05-25 11:50:42 -0400
committerKevin Lim <ktlim@umich.edu>2006-05-25 11:50:42 -0400
commit32509d83878816cd870cea1ccbb8a9eb46a1e3f6 (patch)
tree0f929cba3e705d60625830548cbbb3a2c4d9af62 /cpu
parent3fe35232322daef87a0b85d7f3ca4c18330ed7c4 (diff)
downloadgem5-32509d83878816cd870cea1ccbb8a9eb46a1e3f6.tar.xz
Fix up kernel stats, allow them to not be used as well.
arch/alpha/ev5.cc: Fix up some stuff I missed in the last kernel stats checkin. cpu/checker/cpu.cc: Allow the checker to disable its kernel stats. cpu/cpu_exec_context.cc: Allow CPUExecContext to be created without kernelStats. cpu/cpu_exec_context.hh: Allow CPUExecContext to be created without kernelStats. Default usage leaves kernelStats on. --HG-- extra : convert_revision : 8ed5bffd3a5b6275baa07fb4ea385eeab1a0456a
Diffstat (limited to 'cpu')
-rw-r--r--cpu/checker/cpu.cc4
-rw-r--r--cpu/cpu_exec_context.cc15
-rw-r--r--cpu/cpu_exec_context.hh3
3 files changed, 15 insertions, 7 deletions
diff --git a/cpu/checker/cpu.cc b/cpu/checker/cpu.cc
index 08ab5d5c8..41ff6e769 100644
--- a/cpu/checker/cpu.cc
+++ b/cpu/checker/cpu.cc
@@ -103,7 +103,7 @@ CheckerCPU::setMemory(FunctionalMemory *mem)
execContexts.push_back(xcProxy);
#else
if (systemPtr) {
- cpuXC = new CPUExecContext(this, 0, systemPtr, itb, dtb, memPtr);
+ cpuXC = new CPUExecContext(this, 0, systemPtr, itb, dtb, memPtr, false);
cpuXC->setStatus(ExecContext::Suspended);
xcProxy = cpuXC->getProxy();
@@ -122,7 +122,7 @@ CheckerCPU::setSystem(System *system)
systemPtr = system;
if (memPtr) {
- cpuXC = new CPUExecContext(this, 0, systemPtr, itb, dtb, memPtr);
+ cpuXC = new CPUExecContext(this, 0, systemPtr, itb, dtb, memPtr, false);
cpuXC->setStatus(ExecContext::Suspended);
xcProxy = cpuXC->getProxy();
diff --git a/cpu/cpu_exec_context.cc b/cpu/cpu_exec_context.cc
index 78ce058e8..e30295ef8 100644
--- a/cpu/cpu_exec_context.cc
+++ b/cpu/cpu_exec_context.cc
@@ -53,8 +53,9 @@ using namespace std;
// constructor
#if FULL_SYSTEM
CPUExecContext::CPUExecContext(BaseCPU *_cpu, int _thread_num, System *_sys,
- AlphaITB *_itb, AlphaDTB *_dtb,
- FunctionalMemory *_mem)
+ AlphaITB *_itb, AlphaDTB *_dtb,
+ FunctionalMemory *_mem,
+ bool use_kernel_stats)
: _status(ExecContext::Unallocated), cpu(_cpu), thread_num(_thread_num),
cpu_id(-1), lastActivate(0), lastSuspend(0), mem(_mem), itb(_itb),
dtb(_dtb), system(_sys), memctrl(_sys->memctrl), physmem(_sys->physmem),
@@ -79,6 +80,12 @@ CPUExecContext::CPUExecContext(BaseCPU *_cpu, int _thread_num, System *_sys,
static ProfileNode dummyNode;
profileNode = &dummyNode;
profilePC = 3;
+
+ if (use_kernel_stats) {
+ kernelStats = new Kernel::Statistics(system);
+ } else {
+ kernelStats = NULL;
+ }
}
#else
CPUExecContext::CPUExecContext(BaseCPU *_cpu, int _thread_num,
@@ -279,8 +286,8 @@ void
CPUExecContext::regStats(const string &name)
{
#if FULL_SYSTEM
- kernelStats = new Kernel::Statistics(system);
- kernelStats->regStats(name + ".kern");
+ if (kernelStats)
+ kernelStats->regStats(name + ".kern");
#endif
}
diff --git a/cpu/cpu_exec_context.hh b/cpu/cpu_exec_context.hh
index 3d1428933..061fe450a 100644
--- a/cpu/cpu_exec_context.hh
+++ b/cpu/cpu_exec_context.hh
@@ -193,7 +193,8 @@ class CPUExecContext
// constructor: initialize context from given process structure
#if FULL_SYSTEM
CPUExecContext(BaseCPU *_cpu, int _thread_num, System *_system,
- AlphaITB *_itb, AlphaDTB *_dtb, FunctionalMemory *_dem);
+ AlphaITB *_itb, AlphaDTB *_dtb, FunctionalMemory *_mem,
+ bool use_kernel_stats = true);
#else
CPUExecContext(BaseCPU *_cpu, int _thread_num, Process *_process, int _asid);
CPUExecContext(BaseCPU *_cpu, int _thread_num, FunctionalMemory *_mem,