diff options
author | Matt Horsnell <Matt.Horsnell@arm.com> | 2011-01-18 16:30:02 -0600 |
---|---|---|
committer | Matt Horsnell <Matt.Horsnell@arm.com> | 2011-01-18 16:30:02 -0600 |
commit | 5ebf3b280867925917654f5362d3ece21dc2355e (patch) | |
tree | fb57127c839ef57d0f2dfa1b11b35fbdb7225dd4 /src/cpu | |
parent | ee9a331fe59356a11e6f610967cd5aa08cef3db9 (diff) | |
download | gem5-5ebf3b280867925917654f5362d3ece21dc2355e.tar.xz |
O3: Fixes the way prefetches are handled inside the iew unit.
This patch prevents the prefetch being added to the instCommit queue twice.
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/o3/iew_impl.hh | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cpu/o3/iew_impl.hh b/src/cpu/o3/iew_impl.hh index e1af20852..3f53b4197 100644 --- a/src/cpu/o3/iew_impl.hh +++ b/src/cpu/o3/iew_impl.hh @@ -1222,8 +1222,7 @@ DefaultIEW<Impl>::executeInsts() // Execute instruction. // Note that if the instruction faults, it will be handled // at the commit stage. - if (inst->isMemRef() && - (!inst->isDataPrefetch() && !inst->isInstPrefetch())) { + if (inst->isMemRef()) { DPRINTF(IEW, "Execute: Calculating address for memory " "reference.\n"); @@ -1232,6 +1231,9 @@ DefaultIEW<Impl>::executeInsts() // Loads will mark themselves as executed, and their writeback // event adds the instruction to the queue to commit fault = ldstQueue.executeLoad(inst); + if (inst->isDataPrefetch() || inst->isInstPrefetch()) { + fault = NoFault; + } } else if (inst->isStore()) { fault = ldstQueue.executeStore(inst); |