summaryrefslogtreecommitdiff
path: root/src/dev
diff options
context:
space:
mode:
authorGene Wu <Gene.Wu@arm.com>2010-08-23 11:18:41 -0500
committerGene Wu <Gene.Wu@arm.com>2010-08-23 11:18:41 -0500
commit4b9de4243943086294d7a2d7ab81a134d4fe5a49 (patch)
tree36f67c7f22967f8ee3ac97885920b741841e17d2 /src/dev
parentaa601750f8161fcd60b1083067d5bcd5e48a7ccc (diff)
downloadgem5-4b9de4243943086294d7a2d7ab81a134d4fe5a49.tar.xz
Devices: Allow a device to specify that a request is uncachable.
Diffstat (limited to 'src/dev')
-rw-r--r--src/dev/io_device.cc6
-rw-r--r--src/dev/io_device.hh2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/dev/io_device.cc b/src/dev/io_device.cc
index b3054a6ee..5bb981c66 100644
--- a/src/dev/io_device.cc
+++ b/src/dev/io_device.cc
@@ -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
diff --git a/src/dev/io_device.hh b/src/dev/io_device.hh
index 9ed287589..bc6f1d4f7 100644
--- a/src/dev/io_device.hh
+++ b/src/dev/io_device.hh
@@ -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; }