diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2010-08-23 11:18:39 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2010-08-23 11:18:39 -0500 |
commit | 1d1837ee9855f06af963f96948c33623bf905e7d (patch) | |
tree | 3fda014fefbb62f93917dd80bcaa10367aaed60a | |
parent | ac575a9d8242d4ff8e40ac25f2fd5862ef551ad7 (diff) | |
download | gem5-1d1837ee9855f06af963f96948c33623bf905e7d.tar.xz |
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.
-rw-r--r-- | src/cpu/base_dyn_inst.hh | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/cpu/base_dyn_inst.hh b/src/cpu/base_dyn_inst.hh index 3ecec0f0c..6ea00dd3d 100644 --- a/src/cpu/base_dyn_inst.hh +++ b/src/cpu/base_dyn_inst.hh @@ -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) { |