 + 
 +     config_file = Param.String("", "configuration file")
 diff -crbN --exclude build --exclude '*.pyc' gem5-stable-clean/src/mem/SConscript gem5-stable-ramulator/src/mem/SConscript
-*** gem5-stable-clean/src/mem/SConscript	2014-06-01 09:00:23.000000000 +0800
---- gem5-stable-ramulator/src/mem/SConscript	2014-10-12 07:00:43.000000000 +0800
+*** gem5-stable-clean/src/mem/SConscript	2014-10-13 11:46:36.873763648 -0400
+--- gem5-stable-ramulator/src/mem/SConscript	2015-06-26 17:18:04.979695460 -0400
 ***************
 *** 71,76 ****
 --- 71,81 ----

+     bool need_resp = pkt->needsResponse();
+     access(pkt);
+     if (need_resp) {
+         pkt->busFirstWordDelay = pkt->busLastWordDelay = 0;
+         resp_queue.push_back(pkt);
+         if (!resp_stall && !send_resp_event.scheduled())
+             schedule(send_resp_event, curTick());

+         if (accepted){
+             reads[req.addr].push_back(pkt);
+             DPRINTF(Ramulator, "Read to %ld accepted.\n", req.addr);
+ 
+             // added counter to track requests in flight
+             ++requestsInFlight;
+         } else {
+             req_stall = true;
+         }
+     } else if (pkt->isWrite()) {
+         ramulator::Request req(pkt->getAddr(), ramulator::Request::Type::WRITE, write_cb_func);
+         accepted = wrapper->send(req);
+         if (accepted){
+             accessAndRespond(pkt);
+             DPRINTF(Ramulator, "Write to %ld accepted and served.\n", req.addr);
+ 
+             // added counter to track requests in flight
+             ++requestsInFlight;
+         } else {
+             req_stall = true;
+         }
+     } else {
+         // keep it simple and just respond if necessary
+         accessAndRespond(pkt);
+     }
+     return accepted;
+ }
+ 
+ void Ramulator::recvRetry() {
+     DPRINTF(Ramulator, "Retrying\n");
+ 
+     assert(resp_stall);
+     resp_stall = false;
+     sendResponse();
+ }
