diff options
author | Min Kyu Jeong <minkyu.jeong@arm.com> | 2010-08-23 11:18:39 -0500 |
---|---|---|
committer | Min Kyu Jeong <minkyu.jeong@arm.com> | 2010-08-23 11:18:39 -0500 |
commit | d4e83a400189ef91a5b0f444c9c99d443cc1a251 (patch) | |
tree | 09090f48db662db470bc6a4514365193e6e61219 /src/arch | |
parent | cb76111a7e79c9b0364e49bdf34120f440e42746 (diff) | |
download | gem5-d4e83a400189ef91a5b0f444c9c99d443cc1a251.tar.xz |
ARM: Finish the timing translation when taking a fault.
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/arm/table_walker.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc index 468c19f75..9e792845c 100644 --- a/src/arch/arm/table_walker.cc +++ b/src/arch/arm/table_walker.cc @@ -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) { |