BaseDynInst: Preserve the faults returned from read and write.
When implementing timing address translations instead of atomic, I forgot to preserve the faults that are returned from the read and write calls. This patch reinstates them.
This commit is contained in:
parent
29e8bcead5
commit
a5feaa6a69
1 changed files with 2 additions and 2 deletions
|
@ -887,7 +887,7 @@ BaseDynInst<Impl>::read(Addr addr, T &data, unsigned flags)
|
||||||
if (fault == NoFault) {
|
if (fault == NoFault) {
|
||||||
effAddr = req->getVaddr();
|
effAddr = req->getVaddr();
|
||||||
effAddrValid = true;
|
effAddrValid = true;
|
||||||
cpu->read(req, sreqLow, sreqHigh, data, lqIdx);
|
fault = cpu->read(req, sreqLow, sreqHigh, data, lqIdx);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Return a fixed value to keep simulation deterministic even
|
// Return a fixed value to keep simulation deterministic even
|
||||||
|
@ -933,7 +933,7 @@ BaseDynInst<Impl>::write(T data, Addr addr, unsigned flags, uint64_t *res)
|
||||||
if (fault == NoFault) {
|
if (fault == NoFault) {
|
||||||
effAddr = req->getVaddr();
|
effAddr = req->getVaddr();
|
||||||
effAddrValid = true;
|
effAddrValid = true;
|
||||||
cpu->write(req, sreqLow, sreqHigh, data, sqIdx);
|
fault = cpu->write(req, sreqLow, sreqHigh, data, sqIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
return fault;
|
return fault;
|
||||||
|
|
Loading…
Reference in a new issue