o3 cpu: fix zero reg problem
authorAndrea Pellegrini <andrea.pellegrini@gmail.com>
Tue, 22 Jan 2013 06:13:28 +0000 (00:13 -0600)
committerAndrea Pellegrini <andrea.pellegrini@gmail.com>
Tue, 22 Jan 2013 06:13:28 +0000 (00:13 -0600)
There was an issue w/ the rename logic, which would assign a previous physical
register to the ZeroReg architectural register in x86.  This issue was giving
problems for instructions squashed in threads w/ ID different from 0,
sometimes allowing non-mispredicted instructions to obtain a value different
from zero when reading the zeroReg.

src/cpu/o3/rename_map.cc

index 8508071b42016c3f606d69ce26d5f1366cdd88b6..57caa76be7abf557ac9fdcfa7e3d58a42557fd14 100644 (file)
@@ -158,6 +158,7 @@ SimpleRenameMap::rename(RegIndex arch_reg)
         } else {
             // Otherwise return the zero register so nothing bad happens.
             renamed_reg = intZeroReg;
+            prev_reg = intZeroReg;
         }
     } else if (arch_reg < numLogicalRegs) {
         // Record the current physical register that is renamed to the