summaryrefslogtreecommitdiff
path: root/src/mem/ruby/system/System.cc
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2012-10-15 17:27:17 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2012-10-15 17:27:17 -0500
commit61434a9943236e8586d9ac772cfe3de3145abb78 (patch)
tree94e4760fbcc0a3c234752f587ba706a06089b8f9 /src/mem/ruby/system/System.cc
parentc14e6cfc4e84ba198ef6ec2f9cae2b3eda15813c (diff)
downloadgem5-61434a9943236e8586d9ac772cfe3de3145abb78.tar.xz
ruby: register multiple memory controllers
Currently the Ruby System maintains pointer to only one of the memory controllers. But there can be multiple controllers in the system. This patch adds a vector of memory controllers.
Diffstat (limited to 'src/mem/ruby/system/System.cc')
-rw-r--r--src/mem/ruby/system/System.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mem/ruby/system/System.cc b/src/mem/ruby/system/System.cc
index 6e144a703..b41f2d727 100644
--- a/src/mem/ruby/system/System.cc
+++ b/src/mem/ruby/system/System.cc
@@ -119,7 +119,7 @@ RubySystem::registerSparseMemory(SparseMemory* s)
void
RubySystem::registerMemController(MemoryControl *mc) {
- m_memory_controller = mc;
+ m_memory_controller_vec.push_back(mc);
}
RubySystem::~RubySystem()
@@ -365,9 +365,13 @@ RubySystem::startup()
delete m_cache_recorder;
m_cache_recorder = NULL;
m_warmup_enabled = false;
+
// reset DRAM so that it's not waiting for events on the old event
// queue
- m_memory_controller->reset();
+ for (int i = 0; i < m_memory_controller_vec.size(); ++i) {
+ m_memory_controller_vec[i]->reset();
+ }
+
// Restore eventq head
eventq_head = eventq->replaceHead(eventq_head);
// Restore curTick and Ruby System's clock