Devices: Allow a device to specify that a request is uncachable.
authorGene Wu <Gene.Wu@arm.com>
Mon, 23 Aug 2010 16:18:41 +0000 (11:18 -0500)
committerGene Wu <Gene.Wu@arm.com>
Mon, 23 Aug 2010 16:18:41 +0000 (11:18 -0500)
src/dev/io_device.cc
src/dev/io_device.hh

index b3054a6ee9a4e3d6ff0c71b2f9dfed27dc8d7169..5bb981c669bda601adf3efd79eb4e243bd5372f9 100644 (file)
@@ -221,7 +221,7 @@ DmaPort::recvRetry()
 
 void
 DmaPort::dmaAction(Packet::Command cmd, Addr addr, int size, Event *event,
-                   uint8_t *data, Tick delay)
+                   uint8_t *data, Tick delay, Request::Flags flag)
 {
     assert(device->getState() == SimObject::Running);
 
@@ -229,10 +229,10 @@ DmaPort::dmaAction(Packet::Command cmd, Addr addr, int size, Event *event,
 
 
     DPRINTF(DMA, "Starting DMA for addr: %#x size: %d sched: %d\n", addr, size,
-            event->scheduled());
+            event ? event->scheduled() : -1 );
     for (ChunkGenerator gen(addr, size, peerBlockSize());
          !gen.done(); gen.next()) {
-            Request *req = new Request(gen.addr(), gen.size(), 0);
+            Request *req = new Request(gen.addr(), gen.size(), flag);
             PacketPtr pkt = new Packet(req, cmd, Packet::Broadcast);
 
             // Increment the data pointer on a write
index 9ed2875897de666eed3d244627fe59c2826fc23a..bc6f1d4f78ef837c7802126cd5f3872aad636158 100644 (file)
@@ -155,7 +155,7 @@ class DmaPort : public Port
     DmaPort(MemObject *dev, System *s, Tick min_backoff, Tick max_backoff);
 
     void dmaAction(Packet::Command cmd, Addr addr, int size, Event *event,
-                   uint8_t *data, Tick delay);
+                   uint8_t *data, Tick delay, Request::Flags flag = 0);
 
     bool dmaPending() { return pendingCount > 0; }