CPU: Set a default value when readBytes faults.

This was being done in read(), but if readBytes was called directly it
wouldn't happen. Also, instead of setting the memory blob being read to -1
which would (I believe) require using memset with -1 as a parameter, this now
uses bzero. It's hoped that it's more specialized behavior will make it
slightly faster.
This commit is contained in:
Ali Saidi 2010-08-23 11:18:39 -05:00
parent ac575a9d82
commit 1d1837ee98

View file

@ -899,6 +899,12 @@ BaseDynInst<Impl>::readBytes(Addr addr, uint8_t *data,
this->setExecuted();
}
if (fault != NoFault) {
// Return a fixed value to keep simulation deterministic even
// along misspeculated paths.
bzero(data, size);
}
if (traceData) {
traceData->setAddr(addr);
}
@ -913,11 +919,6 @@ BaseDynInst<Impl>::read(Addr addr, T &data, unsigned flags)
{
Fault fault = readBytes(addr, (uint8_t *)&data, sizeof(T), flags);
if (fault != NoFault) {
// Return a fixed value to keep simulation deterministic even
// along misspeculated paths.
data = (T)-1;
}
data = TheISA::gtoh(data);
if (traceData) {