diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2007-02-06 18:47:42 -0500 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2007-02-06 18:47:42 -0500 |
commit | 8ffd12e807bd05a57bbe8857dbff0ecaf217fe64 (patch) | |
tree | 6515ebc54b8b0647259f06ed0aa836d5424042c3 /src/cpu | |
parent | 310d8f0992637d69e270cac727ba0ff968cdb6ea (diff) | |
parent | c7a1fdacd6f378dcd1245aab289d497f801398f6 (diff) | |
download | gem5-8ffd12e807bd05a57bbe8857dbff0ecaf217fe64.tar.xz |
merge my index fix and lisa's fix
--HG--
extra : convert_revision : 5f2c7d46c96fa061bbfb66edf188d405ca600020
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/exetrace.cc | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/cpu/exetrace.cc b/src/cpu/exetrace.cc index e34ae3731..5108d7338 100644 --- a/src/cpu/exetrace.cc +++ b/src/cpu/exetrace.cc @@ -411,8 +411,14 @@ Trace::InstRecord::dump(ostream &outs) if(shared_data->y != thread->readIntReg(NumIntArchRegs + 1)) diffY = true; - if(shared_data->fsr != thread->readMiscReg(MISCREG_FSR)) + if(shared_data->fsr != thread->readMiscReg(MISCREG_FSR)) { diffFsr = true; + if (mbits(shared_data->fsr, 63,10) == + mbits(thread->readMiscReg(MISCREG_FSR), 63,10)) { + thread->setMiscReg(MISCREG_FSR, shared_data->fsr); + diffFsr = false; + } + } //if(shared_data->ccr != thread->readMiscReg(MISCREG_CCR)) if(shared_data->ccr != thread->readIntReg(NumIntArchRegs + 2)) @@ -450,16 +456,13 @@ Trace::InstRecord::dump(ostream &outs) diffTlb = true; } - if ((diffPC || diffCC || diffInst || diffIntRegs || + if (diffPC || diffCC || diffInst || diffIntRegs || diffFpRegs || diffTpc || diffTnpc || diffTstate || diffTt || diffHpstate || diffHtstate || diffHtba || diffPstate || diffY || diffCcr || diffTl || diffFsr || diffGl || diffAsi || diffPil || diffCwp || diffCansave || diffCanrestore || diffOtherwin || diffCleanwin || diffTlb) - && !((staticInst->machInst & 0xC1F80000) == 0x81D00000) - && !(((staticInst->machInst & 0xC0000000) == 0xC0000000) - && shared_data->tl == thread->readMiscReg(MISCREG_TL) + 1) - ) { + { outs << "Differences found between M5 and Legion:"; if (diffPC) @@ -639,7 +642,7 @@ Trace::InstRecord::dump(ostream &outs) char label[8]; sprintf(label, "%%f%d", x); printRegPair(outs, label, - thread->readFloatRegBits(x,FloatRegFile::DoubleWidth), + thread->readFloatRegBits(x*2,FloatRegFile::DoubleWidth), shared_data->fpregs[x]); } } @@ -667,7 +670,7 @@ Trace::InstRecord::dump(ostream &outs) } diffcount++; - if (diffcount > 2) + if (diffcount > 3) fatal("Differences found between Legion and M5\n"); } else diffcount = 0; |