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 --- |