changeset 267e1e16e51b in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=267e1e16e51b
description:
        TimingSimpleCPU: split data sender state fix

        In sendSplitData, keep a pointer to the senderState that may be updated 
after
        the call to handle*Packet. This way, if the receiver updates the packet
        senderState, it can still be accessed in sendSplitData.

diffstat:

 src/cpu/simple/timing.cc |  16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diffs (38 lines):

diff -r 8a92b39be50e -r 267e1e16e51b src/cpu/simple/timing.cc
--- a/src/cpu/simple/timing.cc  Sun Feb 06 22:14:18 2011 -0800
+++ b/src/cpu/simple/timing.cc  Sun Feb 06 22:14:18 2011 -0800
@@ -325,26 +325,26 @@
         pkt1->makeResponse();
         completeDataAccess(pkt1);
     } else if (read) {
+        SplitFragmentSenderState * send_state =
+            dynamic_cast<SplitFragmentSenderState *>(pkt1->senderState);
         if (handleReadPacket(pkt1)) {
-            SplitFragmentSenderState * send_state =
-                dynamic_cast<SplitFragmentSenderState *>(pkt1->senderState);
             send_state->clearFromParent();
+            send_state = dynamic_cast<SplitFragmentSenderState *>(
+                    pkt2->senderState);
             if (handleReadPacket(pkt2)) {
-                send_state = dynamic_cast<SplitFragmentSenderState *>(
-                        pkt1->senderState);
                 send_state->clearFromParent();
             }
         }
     } else {
         dcache_pkt = pkt1;
+        SplitFragmentSenderState * send_state =
+            dynamic_cast<SplitFragmentSenderState *>(pkt1->senderState);
         if (handleWritePacket()) {
-            SplitFragmentSenderState * send_state =
-                dynamic_cast<SplitFragmentSenderState *>(pkt1->senderState);
             send_state->clearFromParent();
             dcache_pkt = pkt2;
+            send_state = dynamic_cast<SplitFragmentSenderState *>(
+                    pkt2->senderState);
             if (handleWritePacket()) {
-                send_state = dynamic_cast<SplitFragmentSenderState *>(
-                        pkt1->senderState);
                 send_state->clearFromParent();
             }
         }
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to