diff options
Diffstat (limited to 'src/cpu/trace/trace_cpu.cc')
-rw-r--r-- | src/cpu/trace/trace_cpu.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/cpu/trace/trace_cpu.cc b/src/cpu/trace/trace_cpu.cc index 44da7df1e..7b59b49e0 100644 --- a/src/cpu/trace/trace_cpu.cc +++ b/src/cpu/trace/trace_cpu.cc @@ -62,13 +62,15 @@ TraceCPU::TraceCPU(TraceCPUParams *params) oneTraceComplete(false), traceOffset(0), execCompleteEvent(nullptr), - enableEarlyExit(params->enableEarlyExit) + enableEarlyExit(params->enableEarlyExit), + progressMsgInterval(params->progressMsgInterval), + progressMsgThreshold(params->progressMsgInterval) { // Increment static counter for number of Trace CPUs. ++TraceCPU::numTraceCPUs; - // Check that the python parameters for sizes of ROB, store buffer and load - // buffer do not overflow the corresponding C++ variables. + // Check that the python parameters for sizes of ROB, store buffer and + // load buffer do not overflow the corresponding C++ variables. fatal_if(params->sizeROB > UINT16_MAX, "ROB size set to %d exceeds the " "max. value of %d.\n", params->sizeROB, UINT16_MAX); fatal_if(params->sizeStoreBuffer > UINT16_MAX, "ROB size set to %d " @@ -91,6 +93,16 @@ TraceCPUParams::create() } void +TraceCPU::updateNumOps(uint64_t rob_num) +{ + numOps = rob_num; + if (progressMsgInterval != 0 && numOps.value() >= progressMsgThreshold) { + inform("%s: %i insts committed\n", name(), progressMsgThreshold); + progressMsgThreshold += progressMsgInterval; + } +} + +void TraceCPU::takeOverFrom(BaseCPU *oldCPU) { // Unbind the ports of the old CPU and bind the ports of the TraceCPU. |