diff options
Diffstat (limited to 'src/arch/arm/table_walker.hh')
-rw-r--r-- | src/arch/arm/table_walker.hh | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/arm/table_walker.hh b/src/arch/arm/table_walker.hh index dc801dde8..fde553ff4 100644 --- a/src/arch/arm/table_walker.hh +++ b/src/arch/arm/table_walker.hh @@ -320,6 +320,11 @@ class TableWalker : public MemObject * require an additional level. */ std::list<WalkerState *> stateQueueL2; + /** Queue of requests that have passed are waiting because the walker is + * currently busy. */ + std::list<WalkerState *> pendingQueue;; + + /** Port to issue translation requests from */ DmaPort *port; @@ -331,6 +336,9 @@ class TableWalker : public MemObject WalkerState *currState; + /** If a timing translation is currently in progress */ + bool pending; + public: typedef ArmTableWalkerParams Params; TableWalker(const Params *p); @@ -362,7 +370,11 @@ class TableWalker : public MemObject void doL2DescriptorWrapper(); EventWrapper<TableWalker, &TableWalker::doL2DescriptorWrapper> doL2DescEvent; + Fault processWalk(); + void processWalkWrapper(); + EventWrapper<TableWalker, &TableWalker::processWalkWrapper> doProcessEvent; + void nextWalk(ThreadContext *tc); }; |