1/* 2 * Copyright (c) 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 --- 125 unchanged lines hidden (view full) --- 134 if (walkerState == senderWalk) { 135 iter = currStates.erase(iter); 136 break; 137 } 138 } 139 delete senderWalk; 140 // Since we block requests when another is outstanding, we 141 // need to check if there is a waiting request to be serviced |
142 if (currStates.size()) 143 startWalkWrapper(); |
144 } 145 return true; 146} 147 148void 149Walker::WalkerPort::recvRetry() 150{ 151 walker->recvRetry(); --- 32 unchanged lines hidden (view full) --- 184{ 185 assert(state == Ready); 186 started = false; 187 tc = _tc; 188 mode = _mode; 189 timing = _isTiming; 190} 191 |
192void 193Walker::startWalkWrapper() 194{ 195 unsigned num_squashed = 0; 196 WalkerState *currState = currStates.front(); 197 while ((num_squashed < numSquashable) && currState && 198 currState->translation->squashed()) { 199 currStates.pop_front(); 200 num_squashed++; 201 202 DPRINTF(PageTableWalker, "Squashing table walk for address %#x\n", 203 currState->req->getVaddr()); 204 205 // finish the translation which will delete the translation object 206 currState->translation->finish(new UnimpFault("Squashed Inst"), 207 currState->req, currState->tc, currState->mode); 208 209 // delete the current request 210 delete currState; 211 212 // check the next translation request, if it exists 213 if (currStates.size()) 214 currState = currStates.front(); 215 else 216 currState = NULL; 217 } 218 if (currState && !currState->wasStarted()) 219 currState->startWalk(); 220} 221 |
222Fault 223Walker::WalkerState::startWalk() 224{ 225 Fault fault = NoFault; 226 assert(started == false); 227 started = true; 228 setupWalk(req->getVaddr()); 229 if (timing) { --- 493 unchanged lines hidden --- |