io_device.cc (7403:3d433863cd41) io_device.cc (7607:e75d877c8557)
1/*
2 * Copyright (c) 2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 207 unchanged lines hidden (view full) ---

216 DPRINTF(DMA, "TransmitList: %d, backoffTime: %d inRetry: %d es: %d\n",
217 transmitList.size(), backoffTime, inRetry,
218 backoffEvent.scheduled());
219}
220
221
222void
223DmaPort::dmaAction(Packet::Command cmd, Addr addr, int size, Event *event,
1/*
2 * Copyright (c) 2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 207 unchanged lines hidden (view full) ---

216 DPRINTF(DMA, "TransmitList: %d, backoffTime: %d inRetry: %d es: %d\n",
217 transmitList.size(), backoffTime, inRetry,
218 backoffEvent.scheduled());
219}
220
221
222void
223DmaPort::dmaAction(Packet::Command cmd, Addr addr, int size, Event *event,
224 uint8_t *data, Tick delay)
224 uint8_t *data, Tick delay, Request::Flags flag)
225{
226 assert(device->getState() == SimObject::Running);
227
228 DmaReqState *reqState = new DmaReqState(event, this, size, delay);
229
230
231 DPRINTF(DMA, "Starting DMA for addr: %#x size: %d sched: %d\n", addr, size,
225{
226 assert(device->getState() == SimObject::Running);
227
228 DmaReqState *reqState = new DmaReqState(event, this, size, delay);
229
230
231 DPRINTF(DMA, "Starting DMA for addr: %#x size: %d sched: %d\n", addr, size,
232 event->scheduled());
232 event ? event->scheduled() : -1 );
233 for (ChunkGenerator gen(addr, size, peerBlockSize());
234 !gen.done(); gen.next()) {
233 for (ChunkGenerator gen(addr, size, peerBlockSize());
234 !gen.done(); gen.next()) {
235 Request *req = new Request(gen.addr(), gen.size(), 0);
235 Request *req = new Request(gen.addr(), gen.size(), flag);
236 PacketPtr pkt = new Packet(req, cmd, Packet::Broadcast);
237
238 // Increment the data pointer on a write
239 if (data)
240 pkt->dataStatic(data + gen.complete());
241
242 pkt->senderState = reqState;
243

--- 101 unchanged lines hidden ---
236 PacketPtr pkt = new Packet(req, cmd, Packet::Broadcast);
237
238 // Increment the data pointer on a write
239 if (data)
240 pkt->dataStatic(data + gen.complete());
241
242 pkt->senderState = reqState;
243

--- 101 unchanged lines hidden ---