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 ---