diff options
Diffstat (limited to 'cpu/base_cpu.hh')
-rw-r--r-- | cpu/base_cpu.hh | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/cpu/base_cpu.hh b/cpu/base_cpu.hh index baa956aa8..f346f4ec5 100644 --- a/cpu/base_cpu.hh +++ b/cpu/base_cpu.hh @@ -32,6 +32,7 @@ #include <vector> #include "base/statistics.hh" +#include "cpu/sampling_cpu/sampling_cpu.hh" #include "sim/eventq.hh" #include "sim/sim_object.hh" #include "targetarch/isa_traits.hh" @@ -90,33 +91,36 @@ class BaseCPU : public SimObject virtual void haltContext(int thread_num) {} public: - + struct Params + { + std::string name; + int numberOfThreads; + bool deferRegistration; + Counter max_insts_any_thread; + Counter max_insts_all_threads; + Counter max_loads_any_thread; + Counter max_loads_all_threads; + Tick freq; + bool functionTrace; + Tick functionTraceStart; #ifdef FULL_SYSTEM - BaseCPU(const std::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 = false, Tick _function_trace_start = 0); -#else - BaseCPU(const std::string &_name, int _number_of_threads, bool _def_reg, - Counter max_insts_any_thread = 0, - Counter max_insts_all_threads = 0, - Counter max_loads_any_thread = 0, - Counter max_loads_all_threads = 0, - bool _function_trace = false, Tick _function_trace_start = 0); + System *system; #endif + }; + + const Params *params; + BaseCPU(Params *params); virtual ~BaseCPU(); virtual void init(); virtual void regStats(); - bool deferRegistration; void registerExecContexts(); - /// Prepare for another CPU to take over execution. Called by - /// takeOverFrom() on its argument. - virtual void switchOut(); + /// Prepare for another CPU to take over execution. When it is + /// is ready (drained pipe) it signals the sampler. + virtual void switchOut(SamplingCPU *); /// Take over execution from the given CPU. Used for warm-up and /// sampling. |