summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorMin Kyu Jeong <minkyu.jeong@arm.com>2010-08-23 11:18:39 -0500
committerMin Kyu Jeong <minkyu.jeong@arm.com>2010-08-23 11:18:39 -0500
commitd4e83a400189ef91a5b0f444c9c99d443cc1a251 (patch)
tree09090f48db662db470bc6a4514365193e6e61219 /src/arch
parentcb76111a7e79c9b0364e49bdf34120f440e42746 (diff)
downloadgem5-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.cc12
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) {