diff options
author | Kevin Lim <ktlim@umich.edu> | 2005-02-22 16:03:30 -0500 |
---|---|---|
committer | Kevin Lim <ktlim@umich.edu> | 2005-02-22 16:03:30 -0500 |
commit | e8a564b0fdd8c5b6ae8f73613e3ad25005556ec5 (patch) | |
tree | fe9cd45b453f15fb3d903572edc754489be04016 /cpu/base_cpu.cc | |
parent | 79e83cea971bf346a5b0d6e88541e502a614c777 (diff) | |
parent | 884a8de50955422f3691496c19bf582c0f8f5e32 (diff) | |
download | gem5-e8a564b0fdd8c5b6ae8f73613e3ad25005556ec5.tar.xz |
Merge ktlim@zizzer.eecs.umich.edu:/bk/m5
into zamp.eecs.umich.edu:/z/ktlim2/m5
--HG--
extra : convert_revision : 8a558785c64b7c33e64523d3d887ea6e760c3d2b
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 d653baa29..d1b445287 100644 --- a/cpu/base_cpu.cc +++ b/cpu/base_cpu.cc @@ -52,25 +52,12 @@ int maxThreadsPerCPU = 1; extern void debug_break(); #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 { DPRINTF(FullCPU, "BaseCPU: Creating object, mem address %#x.\n", this); @@ -94,12 +81,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 @@ -108,7 +95,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 @@ -119,12 +106,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 @@ -133,7 +120,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 @@ -142,18 +129,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); } } } @@ -172,7 +159,7 @@ BaseCPU::~BaseCPU() void BaseCPU::init() { - if (!deferRegistration) + if (!params->deferRegistration) registerExecContexts(); } |