summaryrefslogtreecommitdiff
path: root/src/mem/ruby/tester/SyntheticDriver.cc
diff options
context:
space:
mode:
authorDaniel Sanchez <sanchezd@stanford.edu>2009-05-11 10:38:46 -0700
committerDaniel Sanchez <sanchezd@stanford.edu>2009-05-11 10:38:46 -0700
commit93f2f69657d0a2420a2c86b71505e6d27e6e2a38 (patch)
tree8022fec4e3f70b9fb777518d26116eb99b962f80 /src/mem/ruby/tester/SyntheticDriver.cc
parentebf2f5aaddcb81ba39692b716ed9ad658df27cd8 (diff)
downloadgem5-93f2f69657d0a2420a2c86b71505e6d27e6e2a38.tar.xz
ruby: Working M5 interface and updated Ruby interface.
This changeset also includes a lot of work from Derek Hower <drh5@cs.wisc.edu> RubyMemory is now both a driver for Ruby and a port for M5. Changed makeRequest/hitCallback interface. Brought packets (superficially) into the sequencer. Modified tester infrastructure to be packet based. and Ruby can be used together through the example ruby_se.py script. SPARC parallel applications work, and the timing *seems* right from combined M5/Ruby debug traces. To run, % build/ALPHA_SE/m5.debug configs/example/ruby_se.py -c tests/test-progs/hello/bin/alpha/linux/hello -n 4 -t
Diffstat (limited to 'src/mem/ruby/tester/SyntheticDriver.cc')
-rw-r--r--src/mem/ruby/tester/SyntheticDriver.cc19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/mem/ruby/tester/SyntheticDriver.cc b/src/mem/ruby/tester/SyntheticDriver.cc
index 081fc9d5e..f19baa202 100644
--- a/src/mem/ruby/tester/SyntheticDriver.cc
+++ b/src/mem/ruby/tester/SyntheticDriver.cc
@@ -75,18 +75,17 @@ SyntheticDriver::~SyntheticDriver()
}
}
-void SyntheticDriver::hitCallback(NodeID proc, SubBlock& data, CacheRequestType type, int thread)
+void
+SyntheticDriver::hitCallback(Packet * pkt)
{
- DEBUG_EXPR(TESTER_COMP, MedPrio, data);
- //cout << " " << proc << " in S.D. hitCallback" << endl;
- if(XACT_MEMORY){
- //XactRequestGenerator* reqGen = static_cast<XactRequestGenerator*>(m_request_generator_vector[proc]);
- //reqGen->performCallback(proc, data);
- } else {
- m_request_generator_vector[proc]->performCallback(proc, data);
+ NodeID proc = pkt->req->contextId();
+ SubBlock data(Address(pkt->getAddr()), pkt->req->getSize());
+ if (pkt->hasData()) {
+ for (int i = 0; i < pkt->req->getSize(); i++) {
+ data.setByte(i, *(pkt->getPtr<uint8>()+i));
+ }
}
-
- // Mark that we made progress
+ m_request_generator_vector[proc]->performCallback(proc, data);
m_last_progress_vector[proc] = g_eventQueue_ptr->getTime();
}