1/* 2 * Copyright (c) 2010, 2012-2016 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 --- 167 unchanged lines hidden (view full) --- 176 pendingChange(); 177 } 178} 179 180Fault 181TableWalker::walk(RequestPtr _req, ThreadContext *_tc, uint16_t _asid, 182 uint8_t _vmid, bool _isHyp, TLB::Mode _mode, 183 TLB::Translation *_trans, bool _timing, bool _functional, |
184 bool secure, TLB::ArmTranslationType tranType, 185 bool _stage2Req) |
186{ 187 assert(!(_functional && _timing)); 188 ++statWalks; 189 190 WalkerState *savedCurrState = NULL; 191 192 if (!currState && !_functional) { 193 // For atomic mode, a new WalkerState instance should be only created --- 94 unchanged lines hidden (view full) --- 288 currState->isFetch = (currState->mode == TLB::Execute); 289 currState->isWrite = (currState->mode == TLB::Write); 290 291 statRequestOrigin[REQUESTED][currState->isFetch]++; 292 293 // We only do a second stage of translation if we're not secure, or in 294 // hyp mode, the second stage MMU is enabled, and this table walker 295 // instance is the first stage. |
296 // TODO: fix setting of doingStage2 for timing mode |
297 currState->doingStage2 = false; |
298 currState->stage2Req = _stage2Req && !isStage2; |
299 300 bool long_desc_format = currState->aarch64 || _isHyp || isStage2 || 301 longDescFormatInUse(currState->tc); 302 303 if (long_desc_format) { 304 // Helper variables used for hierarchical permissions 305 currState->secureLookup = currState->isSecure; 306 currState->rwTable = true; --- 1936 unchanged lines hidden --- |