Yu-hsin Wang has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email )
Change subject: systemc: associate tlm payload and gem5 packet in
b_transport case
......................................................................
systemc: associate tlm payload and gem5 packet in b_transport case
TlmToGem5Bridge only associates the tlm payload and gem5 packet in
nb_transport case. We should also do the samething in b_transport case.
Otherwise, the downstream Gem5ToTlmBridge cannot get the correct
payload.
Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba
---
M src/systemc/tlm_bridge/tlm_to_gem5.cc
1 file changed, 41 insertions(+), 0 deletions(-)
diff --git a/src/systemc/tlm_bridge/tlm_to_gem5.cc
b/src/systemc/tlm_bridge/tlm_to_gem5.cc
index 0c622f6..2547c99 100644
--- a/src/systemc/tlm_bridge/tlm_to_gem5.cc
+++ b/src/systemc/tlm_bridge/tlm_to_gem5.cc
@@ -338,6 +338,9 @@
pkt = payload2packet(_id, trans);
}
+ auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans);
+ pkt->pushSenderState(tlmSenderState);
+
MemBackdoorPtr backdoor = nullptr;
Tick ticks = bmp.sendAtomicBackdoor(pkt, backdoor);
if (backdoor)
@@ -354,6 +357,12 @@
// update time
t += delay;
+ // clean up
+ tlmSenderState =
+ dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState());
+ sc_assert(tlmSenderState != nullptr);
+ delete tlmSenderState;
+
if (extension == nullptr)
destroyPacket(pkt);
@@ -378,8 +387,17 @@
pkt = payload2packet(_id, trans);
}
+ auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans);
+ pkt->pushSenderState(tlmSenderState);
+
bmp.sendFunctional(pkt);
+ // clean up
+ tlmSenderState =
+ dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState());
+ sc_assert(tlmSenderState != nullptr);
+ delete tlmSenderState;
+
if (extension == nullptr)
destroyPacket(pkt);
@@ -406,6 +424,9 @@
pkt->req->setFlags(Request::NO_ACCESS);
}
+ auto tlmSenderState = new Gem5SystemC::TlmSenderState(trans);
+ pkt->pushSenderState(tlmSenderState);
+
MemBackdoorPtr backdoor = nullptr;
bmp.sendAtomicBackdoor(pkt, backdoor);
if (backdoor) {
@@ -430,6 +451,12 @@
);
}
+ // clean up
+ tlmSenderState =
+ dynamic_cast<Gem5SystemC::TlmSenderState*>(pkt->popSenderState());
+ sc_assert(tlmSenderState != nullptr);
+ delete tlmSenderState;
+
if (extension == nullptr)
destroyPacket(pkt);
--
To view, visit
https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba
Gerrit-Change-Number: 63772
Gerrit-PatchSet: 1
Gerrit-Owner: Yu-hsin Wang <yuhsi...@google.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org