O3: Fix a small corner case with the lsq hazard detection logic.
authorAli Saidi <Ali.Saidi@ARM.com>
Thu, 5 May 2011 01:38:26 +0000 (20:38 -0500)
committerAli Saidi <Ali.Saidi@ARM.com>
Thu, 5 May 2011 01:38:26 +0000 (20:38 -0500)
src/cpu/o3/lsq_unit_impl.hh

index 1e7910387cfa8b855e6c96657d4aee012928d938..2c2b30b8ad9f851936e2f974066e59f931dcaa02 100644 (file)
@@ -465,8 +465,7 @@ LSQUnit<Impl>::checkViolations(int load_idx, DynInstPtr &inst)
         Addr ld_eff_addr2 =
             (ld_inst->effAddr + ld_inst->effSize - 1) >> depCheckShift;
 
-        if ((inst_eff_addr2 > ld_eff_addr1 && inst_eff_addr1 < ld_eff_addr2) ||
-               inst_eff_addr1 == ld_eff_addr1) {
+        if (inst_eff_addr2 >= ld_eff_addr1 && inst_eff_addr1 <= ld_eff_addr2) {
             // A load/store incorrectly passed this load/store.
             // Check if we already have a violator, or if it's newer
             // squash and refetch.