diff --git a/src/mem/ruby/slicc_interface/AbstractController.cc b/src/mem/ruby/slicc_interface/AbstractController.cc index 1222631ca8..b7da81e147 100644 --- a/src/mem/ruby/slicc_interface/AbstractController.cc +++ b/src/mem/ruby/slicc_interface/AbstractController.cc @@ -317,7 +317,10 @@ AbstractController::getPort(const std::string &if_name, PortID idx) void AbstractController::functionalMemoryRead(PacketPtr pkt) { - memoryPort.sendFunctional(pkt); + // read from mem. req. queue if write data is pending there + MessageBuffer *req_queue = getMemReqQueue(); + if (!req_queue || !req_queue->functionalRead(pkt)) + memoryPort.sendFunctional(pkt); } int