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

Reply via email to