Deleted Added
sdiff udiff text old ( 10403:b3231fc8ae9d ) new ( 10821:581fb2484bd6 )
full compact
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

--- 60 unchanged lines hidden (view full) ---

69 hitSingleRequests++;
70 else
71 hitMultiRequests++;
72 }
73
74 DPRINTF(SnoopFilter, "%s: SF value %x.%x\n",
75 __func__, sf_item.requested, sf_item.holder);
76
77 if (!cpkt->req->isUncacheable() && cpkt->needsResponse()) {
78 if (!cpkt->memInhibitAsserted()) {
79 // Max one request per address per port
80 panic_if(sf_item.requested & req_port, "double request :( "\
81 "SF value %x.%x\n", sf_item.requested, sf_item.holder);
82
83 // Mark in-flight requests to distinguish later on
84 sf_item.requested |= req_port;
85 } else {

--- 13 unchanged lines hidden (view full) ---

99
100void
101SnoopFilter::updateRequest(const Packet* cpkt, const SlavePort& slave_port,
102 bool will_retry)
103{
104 DPRINTF(SnoopFilter, "%s: packet src %s addr 0x%x cmd %s\n",
105 __func__, slave_port.name(), cpkt->getAddr(), cpkt->cmdString());
106
107 if (cpkt->req->isUncacheable())
108 return;
109
110 Addr line_addr = cpkt->getAddr() & ~(linesize - 1);
111 SnoopMask req_port = portToMask(slave_port);
112 SnoopItem& sf_item = cachedLocations[line_addr];
113
114 DPRINTF(SnoopFilter, "%s: old SF value %x.%x retry: %i\n",
115 __func__, sf_item.requested, sf_item.holder, will_retry);
116
117 if (will_retry) {

--- 75 unchanged lines hidden (view full) ---

193SnoopFilter::updateSnoopResponse(const Packet* cpkt,
194 const SlavePort& rsp_port,
195 const SlavePort& req_port)
196{
197 DPRINTF(SnoopFilter, "%s: packet rsp %s req %s addr 0x%x cmd %s\n",
198 __func__, rsp_port.name(), req_port.name(), cpkt->getAddr(),
199 cpkt->cmdString());
200
201 assert(cpkt->isResponse());
202 assert(cpkt->memInhibitAsserted());
203
204 if (cpkt->req->isUncacheable())
205 return;
206
207 Addr line_addr = cpkt->getAddr() & ~(linesize - 1);
208 SnoopMask rsp_mask = portToMask(rsp_port);
209 SnoopMask req_mask = portToMask(req_port);
210 SnoopItem& sf_item = cachedLocations[line_addr];
211
212 DPRINTF(SnoopFilter, "%s: old SF value %x.%x\n",
213 __func__, sf_item.requested, sf_item.holder);
214
215 // The source should have the line
216 panic_if(!(sf_item.holder & rsp_mask), "SF value %x.%x does not have "\
217 "the line\n", sf_item.requested, sf_item.holder);
218
219 // The destination should have had a request in

--- 51 unchanged lines hidden (view full) ---

271}
272
273void
274SnoopFilter::updateResponse(const Packet* cpkt, const SlavePort& slave_port)
275{
276 DPRINTF(SnoopFilter, "%s: packet src %s addr 0x%x cmd %s\n",
277 __func__, slave_port.name(), cpkt->getAddr(), cpkt->cmdString());
278
279 assert(cpkt->isResponse());
280
281 if (cpkt->req->isUncacheable())
282 return;
283
284 Addr line_addr = cpkt->getAddr() & ~(linesize - 1);
285 SnoopMask slave_mask = portToMask(slave_port);
286 SnoopItem& sf_item = cachedLocations[line_addr];
287
288 DPRINTF(SnoopFilter, "%s: old SF value %x.%x\n",
289 __func__, sf_item.requested, sf_item.holder);
290
291 // Make sure we have seen the actual request, too
292 panic_if(!(sf_item.requested & slave_mask), "SF value %x.%x missing "\
293 "request bit\n", sf_item.requested, sf_item.holder);
294
295 // Update the residency of the cache line.

--- 45 unchanged lines hidden ---