lsq_impl.hh (8948:e95ee70f876c) lsq_impl.hh (8975:7f36d4436074)
1/*
2 * Copyright (c) 2011-2012 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

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

314 // Speculatively clear the retry Tid. This will get set again if
315 // the LSQUnit was unable to complete its access.
316 retryTid = -1;
317 thread[curr_retry_tid].recvRetry();
318}
319
320template <class Impl>
321bool
1/*
2 * Copyright (c) 2011-2012 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

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

314 // Speculatively clear the retry Tid. This will get set again if
315 // the LSQUnit was unable to complete its access.
316 retryTid = -1;
317 thread[curr_retry_tid].recvRetry();
318}
319
320template <class Impl>
321bool
322LSQ::recvTiming(PacketPtr pkt)
322LSQ<Impl>::recvTimingResp(PacketPtr pkt)
323{
323{
324 assert(pkt->isResponse());
325 if (pkt->isError())
326 DPRINTF(LSQ, "Got error packet back for address: %#X\n",
327 pkt->getAddr());
328 thread[pkt->req->threadId()].completeDataAccess(pkt);
329 return true;
330}
331
332template <class Impl>
324 if (pkt->isError())
325 DPRINTF(LSQ, "Got error packet back for address: %#X\n",
326 pkt->getAddr());
327 thread[pkt->req->threadId()].completeDataAccess(pkt);
328 return true;
329}
330
331template <class Impl>
333bool
334LSQ::recvTimingSnoop(PacketPtr pkt)
332void
333LSQ<Impl>::recvTimingSnoopReq(PacketPtr pkt)
335{
334{
336 assert(pkt->isRequest());
337 DPRINTF(LSQ, "received pkt for addr:%#x %s\n", pkt->getAddr(),
338 pkt->cmdString());
339
340 // must be a snoop
341 if (pkt->isInvalidate()) {
342 DPRINTF(LSQ, "received invalidation for addr:%#x\n",
343 pkt->getAddr());
344 for (ThreadID tid = 0; tid < numThreads; tid++) {
345 thread[tid].checkSnoop(pkt);
346 }
347 }
335 DPRINTF(LSQ, "received pkt for addr:%#x %s\n", pkt->getAddr(),
336 pkt->cmdString());
337
338 // must be a snoop
339 if (pkt->isInvalidate()) {
340 DPRINTF(LSQ, "received invalidation for addr:%#x\n",
341 pkt->getAddr());
342 for (ThreadID tid = 0; tid < numThreads; tid++) {
343 thread[tid].checkSnoop(pkt);
344 }
345 }
348
349 // to provide stronger consistency model
350 return true;
351}
352
353template<class Impl>
354int
355LSQ<Impl>::getCount()
356{
357 unsigned total = 0;
358

--- 255 unchanged lines hidden ---
346}
347
348template<class Impl>
349int
350LSQ<Impl>::getCount()
351{
352 unsigned total = 0;
353

--- 255 unchanged lines hidden ---