Add simple function-tracing support. Prints a message
every time the committed PC changes from one symbol scope
to another.
Set function_trace=y on target CPU to enable.
To defer start, use function_trace_start=<tick>
(in addition to setting function_trace=y).
cpu/base_cpu.cc:
cpu/base_cpu.hh:
Add simple function-tracing support.
cpu/simple_cpu/simple_cpu.cc:
Add function_trace, function_trace_start params
Call traceFunctions() on instruction completion
cpu/simple_cpu/simple_cpu.hh:
Add function_trace, function_trace_start params
--HG--
extra : convert_revision : 8a7f84028ccbaee585253629007f32fc8eae35e1
This commit is contained in:
@@ -123,11 +123,12 @@ SimpleCPU::SimpleCPU(const string &_name,
|
||||
FunctionalMemory *mem,
|
||||
MemInterface *icache_interface,
|
||||
MemInterface *dcache_interface,
|
||||
bool _def_reg, Tick freq)
|
||||
bool _def_reg, Tick freq,
|
||||
bool _function_trace, Tick _function_trace_start)
|
||||
: BaseCPU(_name, /* number_of_threads */ 1, _def_reg,
|
||||
max_insts_any_thread, max_insts_all_threads,
|
||||
max_loads_any_thread, max_loads_all_threads,
|
||||
_system, freq),
|
||||
_system, freq, _function_trace, _function_trace_start),
|
||||
#else
|
||||
SimpleCPU::SimpleCPU(const string &_name, Process *_process,
|
||||
Counter max_insts_any_thread,
|
||||
@@ -136,10 +137,12 @@ SimpleCPU::SimpleCPU(const string &_name, Process *_process,
|
||||
Counter max_loads_all_threads,
|
||||
MemInterface *icache_interface,
|
||||
MemInterface *dcache_interface,
|
||||
bool _def_reg)
|
||||
bool _def_reg,
|
||||
bool _function_trace, Tick _function_trace_start)
|
||||
: BaseCPU(_name, /* number_of_threads */ 1, _def_reg,
|
||||
max_insts_any_thread, max_insts_all_threads,
|
||||
max_loads_any_thread, max_loads_all_threads),
|
||||
max_loads_any_thread, max_loads_all_threads,
|
||||
_function_trace, _function_trace_start),
|
||||
#endif
|
||||
tickEvent(this), xc(NULL), cacheCompletionEvent(this)
|
||||
{
|
||||
@@ -778,6 +781,8 @@ SimpleCPU::tick()
|
||||
if (traceData)
|
||||
traceData->finalize();
|
||||
|
||||
traceFunctions(xc->regs.pc);
|
||||
|
||||
} // if (fault == No_Fault)
|
||||
|
||||
if (fault != No_Fault) {
|
||||
@@ -836,6 +841,8 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(SimpleCPU)
|
||||
|
||||
Param<bool> defer_registration;
|
||||
Param<int> multiplier;
|
||||
Param<bool> function_trace;
|
||||
Param<Tick> function_trace_start;
|
||||
|
||||
END_DECLARE_SIM_OBJECT_PARAMS(SimpleCPU)
|
||||
|
||||
@@ -869,7 +876,9 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(SimpleCPU)
|
||||
INIT_PARAM_DFLT(defer_registration, "defer registration with system "
|
||||
"(for sampling)", false),
|
||||
|
||||
INIT_PARAM_DFLT(multiplier, "clock multiplier", 1)
|
||||
INIT_PARAM_DFLT(multiplier, "clock multiplier", 1),
|
||||
INIT_PARAM_DFLT(function_trace, "Enable function trace", false),
|
||||
INIT_PARAM_DFLT(function_trace_start, "Cycle to start function trace", 0)
|
||||
|
||||
END_INIT_SIM_OBJECT_PARAMS(SimpleCPU)
|
||||
|
||||
@@ -888,7 +897,8 @@ CREATE_SIM_OBJECT(SimpleCPU)
|
||||
(icache) ? icache->getInterface() : NULL,
|
||||
(dcache) ? dcache->getInterface() : NULL,
|
||||
defer_registration,
|
||||
ticksPerSecond * mult);
|
||||
ticksPerSecond * mult,
|
||||
function_trace, function_trace_start);
|
||||
#else
|
||||
|
||||
cpu = new SimpleCPU(getInstanceName(), workload,
|
||||
@@ -896,7 +906,8 @@ CREATE_SIM_OBJECT(SimpleCPU)
|
||||
max_loads_any_thread, max_loads_all_threads,
|
||||
(icache) ? icache->getInterface() : NULL,
|
||||
(dcache) ? dcache->getInterface() : NULL,
|
||||
defer_registration);
|
||||
defer_registration,
|
||||
function_trace, function_trace_start);
|
||||
|
||||
#endif // FULL_SYSTEM
|
||||
|
||||
|
||||
@@ -142,7 +142,8 @@ class SimpleCPU : public BaseCPU
|
||||
Counter max_loads_any_thread, Counter max_loads_all_threads,
|
||||
AlphaITB *itb, AlphaDTB *dtb, FunctionalMemory *mem,
|
||||
MemInterface *icache_interface, MemInterface *dcache_interface,
|
||||
bool _def_reg, Tick freq);
|
||||
bool _def_reg, Tick freq,
|
||||
bool _function_trace, Tick _function_trace_start);
|
||||
|
||||
#else
|
||||
|
||||
@@ -152,7 +153,8 @@ class SimpleCPU : public BaseCPU
|
||||
Counter max_loads_any_thread,
|
||||
Counter max_loads_all_threads,
|
||||
MemInterface *icache_interface, MemInterface *dcache_interface,
|
||||
bool _def_reg);
|
||||
bool _def_reg,
|
||||
bool _function_trace, Tick _function_trace_start);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user