summaryrefslogtreecommitdiff
path: root/src/mem/ruby/system
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2012-10-15 17:27:15 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2012-10-15 17:27:15 -0500
commit6a65fafa52925ec4278121278b048363a3abd5ac (patch)
tree0add5d78fd8955c26249414291deb36d90dfd9ce /src/mem/ruby/system
parentb6bd4f34b4a20ac158af610b71aaa24ac86b1ef6 (diff)
downloadgem5-6a65fafa52925ec4278121278b048363a3abd5ac.tar.xz
ruby: reset timing after cache warm up
Ruby system was recently converted to a clocked object. Such objects maintain state related to the time that has passed so far. During the cache warmup, Ruby system changes its own time and the global time. Later on, the global time is restored. So Ruby system also needs to reset its own time.
Diffstat (limited to 'src/mem/ruby/system')
-rw-r--r--src/mem/ruby/system/System.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mem/ruby/system/System.cc b/src/mem/ruby/system/System.cc
index 8c267654f..6e144a703 100644
--- a/src/mem/ruby/system/System.cc
+++ b/src/mem/ruby/system/System.cc
@@ -354,8 +354,9 @@ RubySystem::startup()
Tick curtick_original = curTick();
// save the event queue head
Event* eventq_head = eventq->replaceHead(NULL);
- // set curTick to 0
+ // set curTick to 0 and reset Ruby System's clock
curTick(0);
+ resetClock();
// Schedule an event to start cache warmup
enqueueRubyEvent(curTick());
@@ -369,8 +370,9 @@ RubySystem::startup()
m_memory_controller->reset();
// Restore eventq head
eventq_head = eventq->replaceHead(eventq_head);
- // Restore curTick
+ // Restore curTick and Ruby System's clock
curTick(curtick_original);
+ resetClock();
}
}