Fix ordering issue with squashed Icache Fetches and Static data in packet.
authorRon Dreslinski <rdreslin@umich.edu>
Tue, 11 Jul 2006 19:42:31 +0000 (15:42 -0400)
committerRon Dreslinski <rdreslin@umich.edu>
Tue, 11 Jul 2006 19:42:31 +0000 (15:42 -0400)
Now hello world works with 2 levels of cache with O3 CPU(multiple outstanding requests).

src/cpu/o3/fetch_impl.hh:
    Fix ordering issue with squashed Icache Fetches and Static data in packet.

--HG--
extra : convert_revision : a6adb87540b007ead0b4982cb3f31da8199fb5ca

src/cpu/o3/fetch_impl.hh

index de883b5ba254225779afb67bf05b0d2450a584ba..39a13f9f8800bc80e1a3f173d57e102617665e66 100644 (file)
@@ -357,6 +357,8 @@ DefaultFetch<Impl>::processCacheCompletion(PacketPtr pkt)
         return;
     }
 
+    memcpy(cacheData[tid], pkt->getPtr<uint8_t *>(), cacheBlkSize);
+
     if (!drainPending) {
         // Wake up the CPU (if it went to sleep and was waiting on
         // this completion event).
@@ -548,7 +550,7 @@ DefaultFetch<Impl>::fetchCacheLine(Addr fetch_PC, Fault &ret_fault, unsigned tid
         // Build packet here.
         PacketPtr data_pkt = new Packet(mem_req,
                                         Packet::ReadReq, Packet::Broadcast);
-        data_pkt->dataStatic(cacheData[tid]);
+        data_pkt->dataDynamic(new uint8_t[cacheBlkSize]);
 
         DPRINTF(Fetch, "Fetch: Doing instruction read.\n");