table_walker.cc (10474:799c8ee4ecba) | table_walker.cc (10509:d5554f97c451) |
---|---|
1/* 2 * Copyright (c) 2010, 2012-2014 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 --- 374 unchanged lines hidden (view full) --- 383 // Terminate the loop, nothing more to do 384 currState = NULL; 385 } 386 } 387 388 // if we've still got pending translations schedule more work 389 nextWalk(tc); 390 currState = NULL; | 1/* 2 * Copyright (c) 2010, 2012-2014 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 --- 374 unchanged lines hidden (view full) --- 383 // Terminate the loop, nothing more to do 384 currState = NULL; 385 } 386 } 387 388 // if we've still got pending translations schedule more work 389 nextWalk(tc); 390 currState = NULL; |
391 completeDrain(); | |
392} 393 394Fault 395TableWalker::processWalk() 396{ 397 Addr ttbr = 0; 398 399 // If translation isn't enabled, we shouldn't be here --- 1272 unchanged lines hidden (view full) --- 1672 1673 DPRINTF(TLBVerbose, "L1 Desc object host addr: %p\n",&currState->l1Desc.data); 1674 DPRINTF(TLBVerbose, "L1 Desc object data: %08x\n",currState->l1Desc.data); 1675 1676 DPRINTF(TLBVerbose, "calling doL1Descriptor for vaddr:%#x\n", currState->vaddr_tainted); 1677 doL1Descriptor(); 1678 1679 stateQueues[L1].pop_front(); | 391} 392 393Fault 394TableWalker::processWalk() 395{ 396 Addr ttbr = 0; 397 398 // If translation isn't enabled, we shouldn't be here --- 1272 unchanged lines hidden (view full) --- 1671 1672 DPRINTF(TLBVerbose, "L1 Desc object host addr: %p\n",&currState->l1Desc.data); 1673 DPRINTF(TLBVerbose, "L1 Desc object data: %08x\n",currState->l1Desc.data); 1674 1675 DPRINTF(TLBVerbose, "calling doL1Descriptor for vaddr:%#x\n", currState->vaddr_tainted); 1676 doL1Descriptor(); 1677 1678 stateQueues[L1].pop_front(); |
1680 completeDrain(); | |
1681 // Check if fault was generated 1682 if (currState->fault != NoFault) { 1683 currState->transState->finish(currState->fault, currState->req, 1684 currState->tc, currState->mode); 1685 1686 pending = false; 1687 nextWalk(currState->tc); 1688 --- 51 unchanged lines hidden (view full) --- 1740 DPRINTF(TLBVerbose, "calling translateTiming again\n"); 1741 currState->fault = tlb->translateTiming(currState->req, 1742 currState->tc, currState->transState, currState->mode); 1743 } 1744 } 1745 1746 1747 stateQueues[L2].pop_front(); | 1679 // Check if fault was generated 1680 if (currState->fault != NoFault) { 1681 currState->transState->finish(currState->fault, currState->req, 1682 currState->tc, currState->mode); 1683 1684 pending = false; 1685 nextWalk(currState->tc); 1686 --- 51 unchanged lines hidden (view full) --- 1738 DPRINTF(TLBVerbose, "calling translateTiming again\n"); 1739 currState->fault = tlb->translateTiming(currState->req, 1740 currState->tc, currState->transState, currState->mode); 1741 } 1742 } 1743 1744 1745 stateQueues[L2].pop_front(); |
1748 completeDrain(); | |
1749 pending = false; 1750 nextWalk(currState->tc); 1751 1752 currState->req = NULL; 1753 currState->tc = NULL; 1754 currState->delayed = false; 1755 1756 delete currState; --- 82 unchanged lines hidden (view full) --- 1839} 1840 1841 1842void 1843TableWalker::nextWalk(ThreadContext *tc) 1844{ 1845 if (pendingQueue.size()) 1846 schedule(doProcessEvent, clockEdge(Cycles(1))); | 1746 pending = false; 1747 nextWalk(currState->tc); 1748 1749 currState->req = NULL; 1750 currState->tc = NULL; 1751 currState->delayed = false; 1752 1753 delete currState; --- 82 unchanged lines hidden (view full) --- 1836} 1837 1838 1839void 1840TableWalker::nextWalk(ThreadContext *tc) 1841{ 1842 if (pendingQueue.size()) 1843 schedule(doProcessEvent, clockEdge(Cycles(1))); |
1844 else 1845 completeDrain(); |
|
1847} 1848 1849bool 1850TableWalker::fetchDescriptor(Addr descAddr, uint8_t *data, int numBytes, 1851 Request::Flags flags, int queueIndex, Event *event, 1852 void (TableWalker::*doDescriptor)()) 1853{ 1854 bool isTiming = currState->timing; --- 155 unchanged lines hidden --- | 1846} 1847 1848bool 1849TableWalker::fetchDescriptor(Addr descAddr, uint8_t *data, int numBytes, 1850 Request::Flags flags, int queueIndex, Event *event, 1851 void (TableWalker::*doDescriptor)()) 1852{ 1853 bool isTiming = currState->timing; --- 155 unchanged lines hidden --- |