diff options
author | Nathan Binkert <binkertn@umich.edu> | 2005-02-19 11:46:41 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2005-02-19 11:46:41 -0500 |
commit | 9b1e2db811f86d9911bacaad475d1fec70c4aecd (patch) | |
tree | 8be933fb7dd72899a574fd6386b90d5b78710149 /cpu/base_cpu.cc | |
parent | f4d3f781f1a36d07700a2af98319b67b179f9e5d (diff) | |
download | gem5-9b1e2db811f86d9911bacaad475d1fec70c4aecd.tar.xz |
Clean up CPU stuff and make it use params structs
cpu/base_cpu.cc:
cpu/base_cpu.hh:
Convert the CPU stuff to use a params struct
cpu/memtest/memtest.cc:
The memory tester is really not a cpu, so don't derive from
BaseCPU since it just makes things a pain in the butt. Keep
track of max loads in the memtest class now that the base class
doesn't do it for us.
Don't have any default parameters.
cpu/memtest/memtest.hh:
The memory tester is really not a cpu, so don't derive from
BaseCPU since it just makes things a pain in the butt. Keep
track of max loads in the memtest class now that the base class
doesn't do it for us.
cpu/simple_cpu/simple_cpu.cc:
Convert to use a params struct.
remove default parameters
cpu/simple_cpu/simple_cpu.hh:
convert to use a params struct
cpu/trace/opt_cpu.cc:
cpu/trace/opt_cpu.hh:
cpu/trace/trace_cpu.cc:
cpu/trace/trace_cpu.hh:
this isn't really a cpu. don't derive from BaseCPU
objects/MemTest.mpy:
we only need one max_loads parameter
sim/main.cc:
Don't check for the number of CPUs since we may be doing something
else going on. If we don't have anything to simulate, the
simulator will exit anyway.
--HG--
extra : convert_revision : 2195a34a9ec90b5414324054ceb3bab643540dd5
Diffstat (limited to 'cpu/base_cpu.cc')
-rw-r--r-- | cpu/base_cpu.cc | 49 |
1 files changed, 18 insertions, 31 deletions
diff --git a/cpu/base_cpu.cc b/cpu/base_cpu.cc index 425ac8877..a17edd371 100644 --- a/cpu/base_cpu.cc +++ b/cpu/base_cpu.cc @@ -49,25 +49,12 @@ vector<BaseCPU *> BaseCPU::cpuList; int maxThreadsPerCPU = 1; #ifdef FULL_SYSTEM -BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, - Counter max_insts_any_thread, - Counter max_insts_all_threads, - Counter max_loads_any_thread, - Counter max_loads_all_threads, - System *_system, Tick freq, - bool _function_trace, Tick _function_trace_start) - : SimObject(_name), frequency(freq), checkInterrupts(true), - deferRegistration(_def_reg), number_of_threads(_number_of_threads), - system(_system) +BaseCPU::BaseCPU(Params *p) + : SimObject(p->name), frequency(p->freq), checkInterrupts(true), + params(p), number_of_threads(p->numberOfThreads), system(p->system) #else -BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, - Counter max_insts_any_thread, - Counter max_insts_all_threads, - Counter max_loads_any_thread, - Counter max_loads_all_threads, - bool _function_trace, Tick _function_trace_start) - : SimObject(_name), deferRegistration(_def_reg), - number_of_threads(_number_of_threads) +BaseCPU::BaseCPU(Params *p) + : SimObject(p->name), params(p), number_of_threads(p->numberOfThreads) #endif { // add self to global list of CPUs @@ -84,12 +71,12 @@ BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, // // set up instruction-count-based termination events, if any // - if (max_insts_any_thread != 0) + if (p->max_insts_any_thread != 0) for (int i = 0; i < number_of_threads; ++i) - new SimExitEvent(comInstEventQueue[i], max_insts_any_thread, + new SimExitEvent(comInstEventQueue[i], p->max_insts_any_thread, "a thread reached the max instruction count"); - if (max_insts_all_threads != 0) { + if (p->max_insts_all_threads != 0) { // allocate & initialize shared downcounter: each event will // decrement this when triggered; simulation will terminate // when counter reaches 0 @@ -98,7 +85,7 @@ BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, for (int i = 0; i < number_of_threads; ++i) new CountedExitEvent(comInstEventQueue[i], "all threads reached the max instruction count", - max_insts_all_threads, *counter); + p->max_insts_all_threads, *counter); } // allocate per-thread load-based event queues @@ -109,12 +96,12 @@ BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, // // set up instruction-count-based termination events, if any // - if (max_loads_any_thread != 0) + if (p->max_loads_any_thread != 0) for (int i = 0; i < number_of_threads; ++i) - new SimExitEvent(comLoadEventQueue[i], max_loads_any_thread, + new SimExitEvent(comLoadEventQueue[i], p->max_loads_any_thread, "a thread reached the max load count"); - if (max_loads_all_threads != 0) { + if (p->max_loads_all_threads != 0) { // allocate & initialize shared downcounter: each event will // decrement this when triggered; simulation will terminate // when counter reaches 0 @@ -123,7 +110,7 @@ BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, for (int i = 0; i < number_of_threads; ++i) new CountedExitEvent(comLoadEventQueue[i], "all threads reached the max load count", - max_loads_all_threads, *counter); + p->max_loads_all_threads, *counter); } #ifdef FULL_SYSTEM @@ -132,18 +119,18 @@ BaseCPU::BaseCPU(const string &_name, int _number_of_threads, bool _def_reg, #endif functionTracingEnabled = false; - if (_function_trace) { + if (p->functionTrace) { functionTraceStream = simout.find(csprintf("ftrace.%s", name())); currentFunctionStart = currentFunctionEnd = 0; - functionEntryTick = _function_trace_start; + functionEntryTick = p->functionTraceStart; - if (_function_trace_start == 0) { + if (p->functionTraceStart == 0) { functionTracingEnabled = true; } else { Event *e = new EventWrapper<BaseCPU, &BaseCPU::enableFunctionTrace>(this, true); - e->schedule(_function_trace_start); + e->schedule(p->functionTraceStart); } } } @@ -162,7 +149,7 @@ BaseCPU::~BaseCPU() void BaseCPU::init() { - if (!deferRegistration) + if (!params->deferRegistration) registerExecContexts(); } |