38a39,81
> Tick
> LSQ<Impl>::DcachePort::recvAtomic(PacketPtr pkt)
> {
> panic("O3CPU model does not work with atomic mode!");
> return curTick;
> }
>
> template <class Impl>
> void
> LSQ<Impl>::DcachePort::recvFunctional(PacketPtr pkt)
> {
> panic("O3CPU doesn't expect recvFunctional callback!");
> }
>
> template <class Impl>
> void
> LSQ<Impl>::DcachePort::recvStatusChange(Status status)
> {
> if (status == RangeChange)
> return;
>
> panic("O3CPU doesn't expect recvStatusChange callback!");
> }
>
> template <class Impl>
> bool
> LSQ<Impl>::DcachePort::recvTiming(PacketPtr pkt)
> {
> lsq->thread[pkt->req->getThreadNum()].completeDataAccess(pkt);
> return true;
> }
>
> template <class Impl>
> void
> LSQ<Impl>::DcachePort::recvRetry()
> {
> lsq->thread[lsq->retryTid].recvRetry();
> // Speculatively clear the retry Tid. This will get set again if
> // the LSQUnit was unable to complete its access.
> lsq->retryTid = -1;
> }
>
> template <class Impl>
40,41c83,85
< : LQEntries(params->LQEntries), SQEntries(params->SQEntries),
< numThreads(params->numberOfThreads)
---
> : dcachePort(this), LQEntries(params->LQEntries),
> SQEntries(params->SQEntries), numThreads(params->numberOfThreads),
> retryTid(-1)
97c141,142
< thread[tid].init(params, maxLQEntries, maxSQEntries, tid);
---
> thread[tid].init(params, this, maxLQEntries, maxSQEntries, tid);
> thread[tid].setDcachePort(&dcachePort);
132a178,179
> dcachePort.setName(name());
>