io_device.cc (8795:0909f8ed7aa0) | io_device.cc (8796:a2ae5c378d0a) |
---|---|
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; --- 101 unchanged lines hidden (view full) --- 110{ 111 assert(pioSize != 0); 112 range_list.clear(); 113 DPRINTF(BusAddrRanges, "registering range: %#x-%#x\n", pioAddr, pioSize); 114 range_list.push_back(RangeSize(pioAddr, pioSize)); 115} 116 117 | 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; --- 101 unchanged lines hidden (view full) --- 110{ 111 assert(pioSize != 0); 112 range_list.clear(); 113 DPRINTF(BusAddrRanges, "registering range: %#x-%#x\n", pioAddr, pioSize); 114 range_list.push_back(RangeSize(pioAddr, pioSize)); 115} 116 117 |
118DmaPort::DmaPort(MemObject *dev, System *s, Tick min_backoff, Tick max_backoff) | 118DmaPort::DmaPort(MemObject *dev, System *s, Tick min_backoff, Tick max_backoff, 119 bool recv_snoops) |
119 : Port(dev->name() + "-dmaport", dev), device(dev), sys(s), 120 pendingCount(0), actionInProgress(0), drainEvent(NULL), 121 backoffTime(0), minBackoffDelay(min_backoff), | 120 : Port(dev->name() + "-dmaport", dev), device(dev), sys(s), 121 pendingCount(0), actionInProgress(0), drainEvent(NULL), 122 backoffTime(0), minBackoffDelay(min_backoff), |
122 maxBackoffDelay(max_backoff), inRetry(false), backoffEvent(this) | 123 maxBackoffDelay(max_backoff), inRetry(false), recvSnoops(recv_snoops), 124 snoopRangeSent(false), backoffEvent(this) |
123{ } 124 125bool 126DmaPort::recvTiming(PacketPtr pkt) 127{ 128 if (pkt->wasNacked()) { 129 DPRINTF(DMA, "Received nacked %s addr %#x\n", 130 pkt->cmdString(), pkt->getAddr()); --- 5 unchanged lines hidden (view full) --- 136 137 reschedule(backoffEvent, curTick() + backoffTime, true); 138 139 DPRINTF(DMA, "Backoff time set to %d ticks\n", backoffTime); 140 141 pkt->reinitNacked(); 142 queueDma(pkt, true); 143 } else if (pkt->senderState) { | 125{ } 126 127bool 128DmaPort::recvTiming(PacketPtr pkt) 129{ 130 if (pkt->wasNacked()) { 131 DPRINTF(DMA, "Received nacked %s addr %#x\n", 132 pkt->cmdString(), pkt->getAddr()); --- 5 unchanged lines hidden (view full) --- 138 139 reschedule(backoffEvent, curTick() + backoffTime, true); 140 141 DPRINTF(DMA, "Backoff time set to %d ticks\n", backoffTime); 142 143 pkt->reinitNacked(); 144 queueDma(pkt, true); 145 } else if (pkt->senderState) { |
146 if (recvSnoops) { 147 if (pkt->isRequest()) { 148 return true; 149 } 150 } 151 |
|
144 DmaReqState *state; 145 backoffTime >>= 2; 146 147 DPRINTF(DMA, "Received response %s addr %#x size %#x\n", 148 pkt->cmdString(), pkt->getAddr(), pkt->req->getSize()); 149 state = dynamic_cast<DmaReqState*>(pkt->senderState); 150 pendingCount--; 151 --- 228 unchanged lines hidden --- | 152 DmaReqState *state; 153 backoffTime >>= 2; 154 155 DPRINTF(DMA, "Received response %s addr %#x size %#x\n", 156 pkt->cmdString(), pkt->getAddr(), pkt->req->getSize()); 157 state = dynamic_cast<DmaReqState*>(pkt->senderState); 158 pendingCount--; 159 --- 228 unchanged lines hidden --- |