cache.cc (11271:f4ad5be63ba8) cache.cc (11275:fc2b0e6550ad)
1/*
2 * Copyright (c) 2010-2015 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

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

2325 if (tgt_pkt->cmd == MemCmd::HardPFReq && forwardSnoops) {
2326 // We need to check the caches above us to verify that
2327 // they don't have a copy of this block in the dirty state
2328 // at the moment. Without this check we could get a stale
2329 // copy from memory that might get used in place of the
2330 // dirty one.
2331 Packet snoop_pkt(tgt_pkt, true, false);
2332 snoop_pkt.setExpressSnoop();
1/*
2 * Copyright (c) 2010-2015 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

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

2325 if (tgt_pkt->cmd == MemCmd::HardPFReq && forwardSnoops) {
2326 // We need to check the caches above us to verify that
2327 // they don't have a copy of this block in the dirty state
2328 // at the moment. Without this check we could get a stale
2329 // copy from memory that might get used in place of the
2330 // dirty one.
2331 Packet snoop_pkt(tgt_pkt, true, false);
2332 snoop_pkt.setExpressSnoop();
2333 // We are sending this packet upwards, but if it hits we will
2334 // get a snoop response that we end up treating just like a
2335 // normal response, hence it needs the MSHR as its sender
2336 // state
2333 snoop_pkt.senderState = mshr;
2334 cpuSidePort->sendTimingSnoopReq(&snoop_pkt);
2335
2336 // Check to see if the prefetch was squashed by an upper cache (to
2337 // prevent us from grabbing the line) or if a Check to see if a
2338 // writeback arrived between the time the prefetch was placed in
2339 // the MSHRs and when it was selected to be sent or if the
2340 // prefetch was squashed by an upper cache.

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

2394 pkt = new Packet(tgt_pkt, false, true);
2395 if (pkt->isWrite()) {
2396 pkt->setData(tgt_pkt->getConstPtr<uint8_t>());
2397 }
2398 }
2399 }
2400
2401 assert(pkt != NULL);
2337 snoop_pkt.senderState = mshr;
2338 cpuSidePort->sendTimingSnoopReq(&snoop_pkt);
2339
2340 // Check to see if the prefetch was squashed by an upper cache (to
2341 // prevent us from grabbing the line) or if a Check to see if a
2342 // writeback arrived between the time the prefetch was placed in
2343 // the MSHRs and when it was selected to be sent or if the
2344 // prefetch was squashed by an upper cache.

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

2398 pkt = new Packet(tgt_pkt, false, true);
2399 if (pkt->isWrite()) {
2400 pkt->setData(tgt_pkt->getConstPtr<uint8_t>());
2401 }
2402 }
2403 }
2404
2405 assert(pkt != NULL);
2402 pkt->senderState = mshr;
2406 // play it safe and append (rather than set) the sender state, as
2407 // forwarded packets may already have existing state
2408 pkt->pushSenderState(mshr);
2403 return pkt;
2404}
2405
2406
2407Tick
2408Cache::nextMSHRReadyTime() const
2409{
2410 Tick nextReady = std::min(mshrQueue.nextMSHRReadyTime(),

--- 238 unchanged lines hidden ---
2409 return pkt;
2410}
2411
2412
2413Tick
2414Cache::nextMSHRReadyTime() const
2415{
2416 Tick nextReady = std::min(mshrQueue.nextMSHRReadyTime(),

--- 238 unchanged lines hidden ---