simple_mem.cc (10922:5ee72f4b2931) | simple_mem.cc (11190:0964165d1857) |
---|---|
1/* 2 * Copyright (c) 2010-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 --- 83 unchanged lines hidden (view full) --- 92 } 93 94 pkt->popLabel(); 95} 96 97bool 98SimpleMemory::recvTimingReq(PacketPtr pkt) 99{ | 1/* 2 * Copyright (c) 2010-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 --- 83 unchanged lines hidden (view full) --- 92 } 93 94 pkt->popLabel(); 95} 96 97bool 98SimpleMemory::recvTimingReq(PacketPtr pkt) 99{ |
100 /// @todo temporary hack to deal with memory corruption issues until 101 /// 4-phase transactions are complete 102 for (int x = 0; x < pendingDelete.size(); x++) 103 delete pendingDelete[x]; 104 pendingDelete.clear(); 105 | |
106 if (pkt->memInhibitAsserted()) { 107 // snooper will supply based on copy of packet 108 // still target's responsibility to delete packet | 100 if (pkt->memInhibitAsserted()) { 101 // snooper will supply based on copy of packet 102 // still target's responsibility to delete packet |
109 pendingDelete.push_back(pkt); | 103 pendingDelete.reset(pkt); |
110 return true; 111 } 112 113 // we should never get a new request after committing to retry the 114 // current one, the bus violates the rule as it simply sends a 115 // retry to the next one waiting on the retry list, so simply 116 // ignore it 117 if (retryReq) --- 42 unchanged lines hidden (view full) --- 160 assert(pkt->isResponse()); 161 // to keep things simple (and in order), we put the packet at 162 // the end even if the latency suggests it should be sent 163 // before the packet(s) before it 164 packetQueue.emplace_back(pkt, curTick() + getLatency()); 165 if (!retryResp && !dequeueEvent.scheduled()) 166 schedule(dequeueEvent, packetQueue.back().tick); 167 } else { | 104 return true; 105 } 106 107 // we should never get a new request after committing to retry the 108 // current one, the bus violates the rule as it simply sends a 109 // retry to the next one waiting on the retry list, so simply 110 // ignore it 111 if (retryReq) --- 42 unchanged lines hidden (view full) --- 154 assert(pkt->isResponse()); 155 // to keep things simple (and in order), we put the packet at 156 // the end even if the latency suggests it should be sent 157 // before the packet(s) before it 158 packetQueue.emplace_back(pkt, curTick() + getLatency()); 159 if (!retryResp && !dequeueEvent.scheduled()) 160 schedule(dequeueEvent, packetQueue.back().tick); 161 } else { |
168 pendingDelete.push_back(pkt); | 162 pendingDelete.reset(pkt); |
169 } 170 171 return true; 172} 173 174void 175SimpleMemory::release() 176{ --- 111 unchanged lines hidden --- | 163 } 164 165 return true; 166} 167 168void 169SimpleMemory::release() 170{ --- 111 unchanged lines hidden --- |