1/* 2 * Copyright (c) 2012-2013, 2015-2016 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 --- 217 unchanged lines hidden (view full) --- 226 s = "FromPrefetcher"; 227 break; 228 default: 229 s = ""; 230 break; 231 } 232 ccprintf(os, "%s%s: ", prefix, s); 233 t.pkt->print(os, verbosity, ""); |
234 ccprintf(os, "\n"); |
235 } 236} 237 238 239void 240MSHR::allocate(Addr blk_addr, unsigned blk_size, PacketPtr target, 241 Tick when_ready, Counter _order, bool alloc_on_fill) 242{ --- 96 unchanged lines hidden (view full) --- 339 targets.add(pkt, whenReady, _order, Target::FromCPU, !inService, 340 alloc_on_fill); 341 } 342} 343 344bool 345MSHR::handleSnoop(PacketPtr pkt, Counter _order) 346{ |
347 DPRINTF(Cache, "%s for %s\n", __func__, pkt->print()); |
348 349 // when we snoop packets the needsWritable and isInvalidate flags 350 // should always be the same, however, this assumes that we never 351 // snoop writes as they are currently not marked as invalidations 352 panic_if(pkt->needsWritable() != pkt->isInvalidate(), |
353 "%s got snoop %s where needsWritable, " 354 "does not match isInvalidate", name(), pkt->print(), |
355 pkt->getAddr()); 356 357 if (!inService || (pkt->isExpressSnoop() && downstreamPending)) { 358 // Request has not been issued yet, or it's been issued 359 // locally but is buffered unissued at some downstream cache 360 // which is forwarding us this snoop. Either way, the packet 361 // we're snooping logically precedes this MSHR's request, so 362 // the snoop has no impact on the MSHR, but must be processed --- 233 unchanged lines hidden --- |