tlb.cc (8552:f51e3dce9521) tlb.cc (8733:64a7bf8fa56c)
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,
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)
456 Translation *translation, bool &delay, bool timing, bool functional)
457{
457{
458 // No such thing as a functional timing access
459 assert(!(timing && functional));
460
458 if (!miscRegValid) {
459 updateMiscReg(tc);
460 DPRINTF(TLBVerbose, "TLB variables changed!\n");
461 }
462
463 Addr vaddr = req->getVaddr();
464 uint32_t flags = req->getFlags();
465

--- 70 unchanged lines hidden (view full) ---

536 else
537 readMisses++;
538
539 // start translation table walk, pass variables rather than
540 // re-retreaving in table walker for speed
541 DPRINTF(TLB, "TLB Miss: Starting hardware table walker for %#x(%d)\n",
542 vaddr, contextId);
543 fault = tableWalker->walk(req, tc, contextId, mode, translation,
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,
544 timing);
547 timing, functional);
545 if (timing && fault == NoFault) {
546 delay = true;
547 // for timing mode, return and wait for table walk
548 return fault;
549 }
550 if (fault)
551 return fault;
552

--- 143 unchanged lines hidden (view full) ---

696#else
697 fault = translateSe(req, tc, mode, NULL, delay, false);
698#endif
699 assert(!delay);
700 return fault;
701}
702
703Fault
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
704TLB::translateTiming(RequestPtr req, ThreadContext *tc,
705 Translation *translation, Mode mode)
706{
707 assert(translation);
708 bool delay = false;
709 Fault fault;
710#if FULL_SYSTEM
711 fault = translateFs(req, tc, mode, translation, delay, true);

--- 29 unchanged lines hidden ---
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 ---