1/* 2 * Copyright (c) 2010 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 --- 439 unchanged lines hidden (view full) --- 448TLB::walkTrickBoxCheck(Addr pa, Addr va, Addr sz, bool is_exec, 449 bool is_write, uint8_t domain, bool sNp) 450{ 451 return NoFault; 452} 453 454Fault 455TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode, |
456 Translation *translation, bool &delay, bool timing, bool functional) |
457{ |
458 // No such thing as a functional timing access 459 assert(!(timing && functional)); 460 |
461 if (!miscRegValid) { 462 updateMiscReg(tc); 463 DPRINTF(TLBVerbose, "TLB variables changed!\n"); 464 } 465 466 Addr vaddr = req->getVaddr(); 467 uint32_t flags = req->getFlags(); 468 --- 70 unchanged lines hidden (view full) --- 539 else 540 readMisses++; 541 542 // start translation table walk, pass variables rather than 543 // re-retreaving in table walker for speed 544 DPRINTF(TLB, "TLB Miss: Starting hardware table walker for %#x(%d)\n", 545 vaddr, contextId); 546 fault = tableWalker->walk(req, tc, contextId, mode, translation, |
547 timing, functional); |
548 if (timing && fault == NoFault) { 549 delay = true; 550 // for timing mode, return and wait for table walk 551 return fault; 552 } 553 if (fault) 554 return fault; 555 --- 143 unchanged lines hidden (view full) --- 699#else 700 fault = translateSe(req, tc, mode, NULL, delay, false); 701#endif 702 assert(!delay); 703 return fault; 704} 705 706Fault |
707TLB::translateFunctional(RequestPtr req, ThreadContext *tc, Mode mode) 708{ 709 bool delay = false; 710 Fault fault; 711#if FULL_SYSTEM 712 fault = translateFs(req, tc, mode, NULL, delay, false, true); 713#else 714 fault = translateSe(req, tc, mode, NULL, delay, false); 715#endif 716 assert(!delay); 717 return fault; 718} 719 720Fault |
721TLB::translateTiming(RequestPtr req, ThreadContext *tc, 722 Translation *translation, Mode mode) 723{ 724 assert(translation); 725 bool delay = false; 726 Fault fault; 727#if FULL_SYSTEM 728 fault = translateFs(req, tc, mode, translation, delay, true); --- 29 unchanged lines hidden --- |