ARM: Finish the timing translation when taking a fault.
authorMin Kyu Jeong <minkyu.jeong@arm.com>
Mon, 23 Aug 2010 16:18:39 +0000 (11:18 -0500)
committerMin Kyu Jeong <minkyu.jeong@arm.com>
Mon, 23 Aug 2010 16:18:39 +0000 (11:18 -0500)
src/arch/arm/table_walker.cc

index 468c19f7538d06f9cc1ef4ba51ea4bee1ab28e0f..9e792845c476363cc0c6fe859f323a07d74d0392 100644 (file)
@@ -145,9 +145,15 @@ TableWalker::walk(RequestPtr _req, ThreadContext *_tc, uint8_t _cid, TLB::Mode _
     f = tlb->walkTrickBoxCheck(l1desc_addr, currState->vaddr, sizeof(uint32_t),
             currState->isFetch, currState->isWrite, 0, true);
     if (f) {
-       currState->tc = NULL;
-       currState->req = NULL;
-       return f;
+        if (currState->timing) {
+            currState->transState->finish(f, currState->req,
+                                          currState->tc, currState->mode);
+            currState = NULL;
+        } else {
+            currState->tc = NULL;
+            currState->req = NULL;
+        }
+        return f;
     }
 
     if (currState->timing) {