Have cpus send snoop ranges
authorRon Dreslinski <rdreslin@umich.edu>
Mon, 9 Oct 2006 05:04:37 +0000 (01:04 -0400)
committerRon Dreslinski <rdreslin@umich.edu>
Mon, 9 Oct 2006 05:04:37 +0000 (01:04 -0400)
--HG--
extra : convert_revision : 2a1fba141e409ee1d7a0b69b5b21d236e3d4ce68

src/cpu/o3/fetch.hh
src/cpu/o3/lsq.hh
src/cpu/ozone/front_end.hh
src/cpu/ozone/lw_lsq.hh
src/cpu/simple/atomic.hh
src/cpu/simple/timing.hh
src/mem/cache/base_cache.hh

index 1a2ca32a4ecb80b628dd25fda037075e182c865e..280bf0e71b8baa94b2743fbda23a16136ed833e3 100644 (file)
@@ -96,7 +96,7 @@ class DefaultFetch
         /** Returns the address ranges of this device. */
         virtual void getDeviceAddressRanges(AddrRangeList &resp,
                                             AddrRangeList &snoop)
-        { resp.clear(); snoop.clear(); }
+        { resp.clear(); snoop.clear(); snoop.push_back(RangeSize(0,-1)); }
 
         /** Timing version of receive.  Handles setting fetch to the
          * proper status to start fetching. */
index 190734dc2acdf38211c97dbc87a28024b56db6b1..6b12d75b4f29474acca1bf738b5117215e9bdfa6 100644 (file)
@@ -311,7 +311,7 @@ class LSQ {
         /** Returns the address ranges of this device. */
         virtual void getDeviceAddressRanges(AddrRangeList &resp,
                                             AddrRangeList &snoop)
-        { resp.clear(); snoop.clear(); }
+        { resp.clear(); snoop.clear(); snoop.push_back(RangeSize(0,-1)); }
 
         /** Timing version of receive.  Handles writing back and
          * completing the load or store that has returned from
index 5ffd3666eacc740ec3c00f146c3d7e1cbdec7398..59cf9785c35c43f4ac31abe102ad442f428699ab 100644 (file)
@@ -92,7 +92,7 @@ class FrontEnd
         /** Returns the address ranges of this device. */
         virtual void getDeviceAddressRanges(AddrRangeList &resp,
                                             AddrRangeList &snoop)
-        { resp.clear(); snoop.clear(); }
+        { resp.clear(); snoop.clear(); snoop.push_back(RangeSize(0,-1)); }
 
         /** Timing version of receive.  Handles setting fetch to the
          * proper status to start fetching. */
index 347f4569b4cefc3721704dbf2eb246aff4b13e9a..9b93ce74fc60565217dd018dbc0d631368c54536 100644 (file)
@@ -260,7 +260,7 @@ class OzoneLWLSQ {
 
         virtual void getDeviceAddressRanges(AddrRangeList &resp,
                                             AddrRangeList &snoop)
-        { resp.clear(); snoop.clear(); }
+        { resp.clear(); snoop.clear(); snoop.push_back(RangeSize(0,-1); }
 
         virtual bool recvTiming(PacketPtr pkt);
 
index b602af55871a0d39a9e6c3872d2842102c1a3598..52afd76ef232352458b645b50a8524c73b0bf7c1 100644 (file)
@@ -104,9 +104,9 @@ class AtomicSimpleCPU : public BaseSimpleCPU
 
         virtual void getDeviceAddressRanges(AddrRangeList &resp,
             AddrRangeList &snoop)
-        { resp.clear(); snoop.clear(); }
-    };
+        { resp.clear(); snoop.clear(); snoop.push_back(RangeSize(0,-1)); }
 
+    };
     CpuPort icachePort;
     CpuPort dcachePort;
 
index b65eebd996dbcf0b8ce98e6bfc298a013c7c34bf..18e13aeb22fbd1fd2498706f9a5c629d78e9d995 100644 (file)
@@ -92,7 +92,7 @@ class TimingSimpleCPU : public BaseSimpleCPU
 
         virtual void getDeviceAddressRanges(AddrRangeList &resp,
             AddrRangeList &snoop)
-        { resp.clear(); snoop.clear(); }
+        { resp.clear(); snoop.clear(); snoop.push_back(RangeSize(0,-1)); }
 
         struct TickEvent : public Event
         {
index 2e92e77300bfdcb9284115f0b3f1d848ffbc015e..de8a19cac64b6634744b43354d1864a18cf78489 100644 (file)
@@ -156,7 +156,7 @@ class BaseCache : public MemObject
         if (status == Port::RangeChange){
             if (!isCpuSide) {
                 cpuSidePort->sendStatusChange(Port::RangeChange);
-                if (topLevelCache && !snoopRangesSent) {
+                if (!snoopRangesSent) {
                     snoopRangesSent = true;
                     memSidePort->sendStatusChange(Port::RangeChange);
                 }
@@ -568,14 +568,14 @@ class BaseCache : public MemObject
         {
             //This is where snoops get updated
             AddrRangeList dummy;
-            if (!topLevelCache)
-            {
+//            if (!topLevelCache)
+//            {
                 cpuSidePort->getPeerAddressRanges(dummy, snoop);
-            }
-            else
-            {
-                snoop.push_back(RangeSize(0,-1));
-            }
+//            }
+//            else
+//            {
+//                snoop.push_back(RangeSize(0,-1));
+//            }
 
             return;
         }