diff options
author | Gabor Dozsa <gabor.dozsa@arm.com> | 2019-01-23 15:15:16 +0000 |
---|---|---|
committer | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2020-01-03 08:17:22 +0000 |
commit | bd32682445150c234f83872e135bc959247a4065 (patch) | |
tree | 542c318f9e34abcb8267cca06c57e1c3a8057b4f /src/cpu/minor | |
parent | 64e136175ed59d481b30b222d4e936160291c2f3 (diff) | |
download | gem5-bd32682445150c234f83872e135bc959247a4065.tar.xz |
cpu: Disable MinorCPU value forwarding with write strobes
Change-Id: I7cb50b80b70fcf43ab23eb9e7333d16328993fe1
Signed-off-by: Gabor Dozsa <gabor.dozsa@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19173
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/cpu/minor')
-rw-r--r-- | src/cpu/minor/lsq.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cpu/minor/lsq.cc b/src/cpu/minor/lsq.cc index dea776c9e..8bbda030c 100644 --- a/src/cpu/minor/lsq.cc +++ b/src/cpu/minor/lsq.cc @@ -142,10 +142,18 @@ LSQ::LSQRequest::containsAddrRangeOf( LSQ::AddrRangeCoverage LSQ::LSQRequest::containsAddrRangeOf(LSQRequestPtr other_request) { - return containsAddrRangeOf(request->getPaddr(), request->getSize(), + AddrRangeCoverage ret = containsAddrRangeOf( + request->getPaddr(), request->getSize(), other_request->request->getPaddr(), other_request->request->getSize()); + /* If there is a strobe mask then store data forwarding might not be + * correct. Instead of checking enablemant of every byte we just fall back + * to PartialAddrRangeCoverage to prohibit store data forwarding */ + if (ret == FullAddrRangeCoverage && request->isMasked()) + ret = PartialAddrRangeCoverage; + return ret; } + bool LSQ::LSQRequest::isBarrier() { |