diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2011-04-04 11:42:23 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2011-04-04 11:42:23 -0500 |
commit | 7dde557fdc51140988092962137e1006d1609bea (patch) | |
tree | 7511f093667759fb13a88cb204247b416295b3c9 /src/cpu/base_dyn_inst.hh | |
parent | ee489a541a8a49de4e8ca6e486081149f57de99f (diff) | |
download | gem5-7dde557fdc51140988092962137e1006d1609bea.tar.xz |
O3: Tighten memory order violation checking to 16 bytes.
The comment in the code suggests that the checking granularity should be 16
bytes, however in reality the shift by 8 is 256 bytes which seems much
larger than required.
Diffstat (limited to 'src/cpu/base_dyn_inst.hh')
-rw-r--r-- | src/cpu/base_dyn_inst.hh | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh index 8b6662d70..a5357a7b0 100644 --- a/src/cpu/base_dyn_inst.hh +++ b/src/cpu/base_dyn_inst.hh @@ -243,6 +243,9 @@ class BaseDynInst : public FastAlloc, public RefCounted /** The effective virtual address (lds & stores only). */ Addr effAddr; + /** The size of the request */ + Addr effSize; + /** Is the effective virtual address valid. */ bool effAddrValid; @@ -892,6 +895,7 @@ BaseDynInst<Impl>::readBytes(Addr addr, uint8_t *data, if (translationCompleted) { if (fault == NoFault) { effAddr = req->getVaddr(); + effSize = size; effAddrValid = true; fault = cpu->read(req, sreqLow, sreqHigh, data, lqIdx); } else { @@ -962,6 +966,7 @@ BaseDynInst<Impl>::writeBytes(uint8_t *data, unsigned size, if (fault == NoFault && translationCompleted) { effAddr = req->getVaddr(); + effSize = size; effAddrValid = true; fault = cpu->write(req, sreqLow, sreqHigh, data, sqIdx); } |