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