diff options
Diffstat (limited to 'src/cpu/o3/iew_impl.hh')
-rw-r--r-- | src/cpu/o3/iew_impl.hh | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cpu/o3/iew_impl.hh b/src/cpu/o3/iew_impl.hh index c809b93ab..2acb941e0 100644 --- a/src/cpu/o3/iew_impl.hh +++ b/src/cpu/o3/iew_impl.hh @@ -1255,7 +1255,13 @@ DefaultIEW<Impl>::executeInsts() } } else { - inst->execute(); + // If the instruction has already faulted, then skip executing it. + // Such case can happen when it faulted during ITLB translation. + // If we execute the instruction (even if it's a nop) the fault + // will be replaced and we will lose it. + if (inst->getFault() == NoFault) { + inst->execute(); + } inst->setExecuted(); |