From ae3d45685512b75f878eb9d7917680fc3971988e Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Wed, 23 Feb 2011 15:10:49 -0600 Subject: ARM: Fix bug that let two table walks occur in parallel. --- src/arch/arm/tlb.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/arch/arm/tlb.cc') diff --git a/src/arch/arm/tlb.cc b/src/arch/arm/tlb.cc index 230c56200..f1c8ae41a 100644 --- a/src/arch/arm/tlb.cc +++ b/src/arch/arm/tlb.cc @@ -529,7 +529,7 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode, vaddr, contextId); fault = tableWalker->walk(req, tc, contextId, mode, translation, timing); - if (timing) { + if (timing && fault == NoFault) { delay = true; // for timing mode, return and wait for table walk return fault; @@ -694,6 +694,8 @@ TLB::translateTiming(RequestPtr req, ThreadContext *tc, #else fault = translateSe(req, tc, mode, translation, delay, true); #endif + DPRINTF(TLB, "Translation returning delay=%d fault=%d\n", delay, fault != + NoFault); if (!delay) translation->finish(fault, req, tc, mode); else -- cgit v1.2.3