dramsim2.cc (11190:0964165d1857) | dramsim2.cc (11192:4c28abcf8249) |
---|---|
1/* 2 * Copyright (c) 2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 161 unchanged lines hidden (view full) --- 170 pkt->checkFunctional(*i); 171 172 pkt->popLabel(); 173} 174 175bool 176DRAMSim2::recvTimingReq(PacketPtr pkt) 177{ | 1/* 2 * Copyright (c) 2013 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 161 unchanged lines hidden (view full) --- 170 pkt->checkFunctional(*i); 171 172 pkt->popLabel(); 173} 174 175bool 176DRAMSim2::recvTimingReq(PacketPtr pkt) 177{ |
178 // we should never see a new request while in retry 179 assert(!retryReq); 180 | 178 // sink inhibited packets without further action |
181 if (pkt->memInhibitAsserted()) { | 179 if (pkt->memInhibitAsserted()) { |
182 // snooper will supply based on copy of packet 183 // still target's responsibility to delete packet | |
184 pendingDelete.reset(pkt); 185 return true; 186 } 187 | 180 pendingDelete.reset(pkt); 181 return true; 182 } 183 |
184 // we should not get a new request after committing to retry the 185 // current one, but unfortunately the CPU violates this rule, so 186 // simply ignore it for now 187 if (retryReq) 188 return false; 189 |
|
188 // if we cannot accept we need to send a retry once progress can 189 // be made 190 bool can_accept = nbrOutstanding() < wrapper.queueSize(); 191 192 // keep track of the transaction 193 if (pkt->isRead()) { 194 if (can_accept) { 195 outstandingReads[pkt->getAddr()].push(pkt); --- 200 unchanged lines hidden --- | 190 // if we cannot accept we need to send a retry once progress can 191 // be made 192 bool can_accept = nbrOutstanding() < wrapper.queueSize(); 193 194 // keep track of the transaction 195 if (pkt->isRead()) { 196 if (can_accept) { 197 outstandingReads[pkt->getAddr()].push(pkt); --- 200 unchanged lines hidden --- |