1a2,13
> * Copyright (c) 2012 ARM Limited
> * All rights reserved.
> *
> * The license below extends only to copyright in the software and shall
> * not be construed as granting a license to any other intellectual
> * property including but not limited to intellectual property relating
> * to a hardware implementation of the functionality of the software
> * licensed hereunder. You may use the software subject to the license
> * terms below provided that you ensure that this notice is replicated
> * unmodified and in its entirety in all distributions of the software,
> * modified or unmodified, in source code or in binary form.
> *
113,127c125,138
< if (pkt->isResponse() || pkt->wasNacked()) {
< WalkerSenderState * senderState =
< dynamic_cast<WalkerSenderState *>(pkt->senderState);
< pkt->senderState = senderState->saved;
< WalkerState * senderWalk = senderState->senderWalk;
< bool walkComplete = senderWalk->recvPacket(pkt);
< delete senderState;
< if (walkComplete) {
< std::list<WalkerState *>::iterator iter;
< for (iter = currStates.begin(); iter != currStates.end(); iter++) {
< WalkerState * walkerState = *(iter);
< if (walkerState == senderWalk) {
< iter = currStates.erase(iter);
< break;
< }
---
> assert(pkt->isResponse());
> WalkerSenderState * senderState =
> dynamic_cast<WalkerSenderState *>(pkt->senderState);
> pkt->senderState = senderState->saved;
> WalkerState * senderWalk = senderState->senderWalk;
> bool walkComplete = senderWalk->recvPacket(pkt);
> delete senderState;
> if (walkComplete) {
> std::list<WalkerState *>::iterator iter;
> for (iter = currStates.begin(); iter != currStates.end(); iter++) {
> WalkerState * walkerState = *(iter);
> if (walkerState == senderWalk) {
> iter = currStates.erase(iter);
> break;
129,136d139
< delete senderWalk;
< // Since we block requests when another is outstanding, we
< // need to check if there is a waiting request to be serviced
< if (currStates.size()) {
< WalkerState * newState = currStates.front();
< if (!newState->wasStarted())
< newState->startWalk();
< }
138,139c141,148
< } else {
< DPRINTF(PageTableWalker, "Received strange packet\n");
---
> delete senderWalk;
> // Since we block requests when another is outstanding, we
> // need to check if there is a waiting request to be serviced
> if (currStates.size()) {
> WalkerState * newState = currStates.front();
> if (!newState->wasStarted())
> newState->startWalk();
> }
144,149d152
< Tick
< Walker::WalkerPort::recvAtomic(PacketPtr pkt)
< {
< return 0;
< }
<
151,156d153
< Walker::WalkerPort::recvFunctional(PacketPtr pkt)
< {
< return;
< }
<
< void
575c572,573
< if (pkt->isResponse() && !pkt->wasNacked()) {
---
> assert(pkt->isResponse());
> if (!pkt->wasNacked()) {
618c616
< } else if (pkt->wasNacked()) {
---
> } else {