O3: Fix a small corner case with the lsq hazard detection logic.
This commit is contained in:
parent
48f7fda706
commit
09a2be0c39
|
@ -465,8 +465,7 @@ LSQUnit<Impl>::checkViolations(int load_idx, DynInstPtr &inst)
|
||||||
Addr ld_eff_addr2 =
|
Addr ld_eff_addr2 =
|
||||||
(ld_inst->effAddr + ld_inst->effSize - 1) >> depCheckShift;
|
(ld_inst->effAddr + ld_inst->effSize - 1) >> depCheckShift;
|
||||||
|
|
||||||
if ((inst_eff_addr2 > ld_eff_addr1 && inst_eff_addr1 < ld_eff_addr2) ||
|
if (inst_eff_addr2 >= ld_eff_addr1 && inst_eff_addr1 <= ld_eff_addr2) {
|
||||||
inst_eff_addr1 == ld_eff_addr1) {
|
|
||||||
// A load/store incorrectly passed this load/store.
|
// A load/store incorrectly passed this load/store.
|
||||||
// Check if we already have a violator, or if it's newer
|
// Check if we already have a violator, or if it's newer
|
||||||
// squash and refetch.
|
// squash and refetch.
|
||||||
|
|
Loading…
Reference in a new issue