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