summaryrefslogtreecommitdiff
path: root/util/tlm/sc_slave_port.cc
diff options
context:
space:
mode:
authorChristian Menard <Christian.Menard@tu-dresden.de>2017-02-09 19:15:35 -0500
committerChristian Menard <Christian.Menard@tu-dresden.de>2017-02-09 19:15:35 -0500
commitd2b19d2732e99b53a31bb967ffccbd44d6619fa3 (patch)
tree70142d9adcb5817369a1982b42e1025f6e88cda0 /util/tlm/sc_slave_port.cc
parent55f5c4dd8a10d14a24208110df891b8b2bbf56e4 (diff)
downloadgem5-d2b19d2732e99b53a31bb967ffccbd44d6619fa3.tar.xz
misc: Clean up and complete the gem5<->SystemC-TLM bridge [3/10]
The current TLM bridge only provides a Slave Port that allows the gem5 world to send request to the SystemC world. This patch series refractors and cleans up the existing code, and adds a Master Port that allows the SystemC world to send requests to the gem5 world. This patch: * Simplify the Slave Port by using a simple_initiator_socket. Testing Done: Example applications are still running. Reviewed at http://reviews.gem5.org/r/3686/ Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'util/tlm/sc_slave_port.cc')
-rw-r--r--util/tlm/sc_slave_port.cc18
1 files changed, 5 insertions, 13 deletions
diff --git a/util/tlm/sc_slave_port.cc b/util/tlm/sc_slave_port.cc
index cea0f6db6..3176de928 100644
--- a/util/tlm/sc_slave_port.cc
+++ b/util/tlm/sc_slave_port.cc
@@ -262,7 +262,7 @@ SCSlavePort::pec(
/* Did another request arrive while blocked, schedule a retry */
if (needToSendRequestRetry) {
needToSendRequestRetry = false;
- iSocket.sendRetryReq();
+ sendRetryReq();
}
}
else if (phase == tlm::BEGIN_RESP)
@@ -276,7 +276,7 @@ SCSlavePort::pec(
bool need_retry;
if (packet->needsResponse()) {
packet->makeResponse();
- need_retry = !iSocket.sendTimingResp(packet);
+ need_retry = !sendTimingResp(packet);
} else {
need_retry = false;
}
@@ -311,7 +311,7 @@ SCSlavePort::recvRespRetry()
blockingResponse = NULL;
PacketPtr packet = Gem5Extension::getExtension(trans).getPacket();
- bool need_retry = !iSocket.sendTimingResp(packet);
+ bool need_retry = !sendTimingResp(packet);
sc_assert(!need_retry);
@@ -333,24 +333,16 @@ SCSlavePort::nb_transport_bw(tlm::tlm_generic_payload& trans,
return tlm::TLM_ACCEPTED;
}
-void
-SCSlavePort::invalidate_direct_mem_ptr(sc_dt::uint64 start_range,
- sc_dt::uint64 end_range)
-{
- SC_REPORT_FATAL("SCSlavePort", "unimpl. func: invalidate_direct_mem_ptr");
-}
-
SCSlavePort::SCSlavePort(const std::string &name_,
const std::string &systemc_name,
ExternalSlave &owner_) :
- tlm::tlm_initiator_socket<>(systemc_name.c_str()),
ExternalSlave::Port(name_, owner_),
- iSocket(*this),
+ iSocket(systemc_name.c_str()),
blockingRequest(NULL),
needToSendRequestRetry(false),
blockingResponse(NULL)
{
- m_export.bind(*this);
+ iSocket.register_nb_transport_bw(this, &SCSlavePort::nb_transport_bw);
}
class SlavePortHandler : public ExternalSlave::Handler