-void
-Trace::NativeTrace::check(ThreadContext * tc, bool isSyscall)
-{
-// ostream &outs = Trace::output();
- nState.update(fd);
- mState.update(tc);
-
- if(isSyscall)
- {
- checkRcx = false;
- checkR11 = false;
- oldRcxVal = mState.rcx;
- oldRealRcxVal = nState.rcx;
- oldR11Val = mState.r11;
- oldRealR11Val = nState.r11;
- }
-
- checkReg("rax", mState.rax, nState.rax);
- checkRcxReg("rcx", mState.rcx, nState.rcx);
- checkReg("rdx", mState.rdx, nState.rdx);
- checkReg("rbx", mState.rbx, nState.rbx);
- checkReg("rsp", mState.rsp, nState.rsp);
- checkReg("rbp", mState.rbp, nState.rbp);
- checkReg("rsi", mState.rsi, nState.rsi);
- checkReg("rdi", mState.rdi, nState.rdi);
- checkReg("r8", mState.r8, nState.r8);
- checkReg("r9", mState.r9, nState.r9);
- checkReg("r10", mState.r10, nState.r10);
- checkR11Reg("r11", mState.r11, nState.r11);
- checkReg("r12", mState.r12, nState.r12);
- checkReg("r13", mState.r13, nState.r13);
- checkReg("r14", mState.r14, nState.r14);
- checkReg("r15", mState.r15, nState.r15);
- checkReg("rip", mState.rip, nState.rip);
- checkXMM(0, mState.xmm, nState.xmm);
- checkXMM(1, mState.xmm, nState.xmm);
- checkXMM(2, mState.xmm, nState.xmm);
- checkXMM(3, mState.xmm, nState.xmm);
- checkXMM(4, mState.xmm, nState.xmm);
- checkXMM(5, mState.xmm, nState.xmm);
- checkXMM(6, mState.xmm, nState.xmm);
- checkXMM(7, mState.xmm, nState.xmm);
- checkXMM(8, mState.xmm, nState.xmm);
- checkXMM(9, mState.xmm, nState.xmm);
- checkXMM(10, mState.xmm, nState.xmm);
- checkXMM(11, mState.xmm, nState.xmm);
- checkXMM(12, mState.xmm, nState.xmm);
- checkXMM(13, mState.xmm, nState.xmm);
- checkXMM(14, mState.xmm, nState.xmm);
- checkXMM(15, mState.xmm, nState.xmm);
-#if THE_ISA == SPARC_ISA
- /*for(int f = 0; f <= 62; f+=2)
- {
- uint64_t regVal;
- int res = read(fd, ®Val, sizeof(regVal));
- if(res < 0)
- panic("First read call failed! %s\n", strerror(errno));
- regVal = TheISA::gtoh(regVal);
- uint64_t realRegVal = thread->readFloatRegBits(f, 64);
- if(regVal != realRegVal)
- {
- DPRINTF(ExecRegDelta, "Register f%d should be %#x but is %#x.\n", f, regVal, realRegVal);
- }
- }*/
- uint64_t regVal;
- int res = read(fd, ®Val, sizeof(regVal));
- if(res < 0)
- panic("First read call failed! %s\n", strerror(errno));
- regVal = TheISA::gtoh(regVal);
- uint64_t realRegVal = thread->readNextPC();
- if(regVal != realRegVal)
- {
- DPRINTF(ExecRegDelta,
- "Register pc should be %#x but is %#x.\n",
- regVal, realRegVal);
- }
- res = read(fd, ®Val, sizeof(regVal));
- if(res < 0)
- panic("First read call failed! %s\n", strerror(errno));
- regVal = TheISA::gtoh(regVal);
- realRegVal = thread->readNextNPC();
- if(regVal != realRegVal)
- {
- DPRINTF(ExecRegDelta,
- "Register npc should be %#x but is %#x.\n",
- regVal, realRegVal);
- }
- res = read(fd, ®Val, sizeof(regVal));
- if(res < 0)
- panic("First read call failed! %s\n", strerror(errno));
- regVal = TheISA::gtoh(regVal);
- realRegVal = thread->readIntReg(SparcISA::NumIntArchRegs + 2);
- if((regVal & 0xF) != (realRegVal & 0xF))
- {
- DPRINTF(ExecRegDelta,
- "Register ccr should be %#x but is %#x.\n",
- regVal, realRegVal);
- }
-#endif
-}
-
-/* namespace Trace */ }
-
-////////////////////////////////////////////////////////////////////////
-//
-// ExeTracer Simulation Object
-//
-Trace::NativeTrace *
-NativeTraceParams::create()
-{
- return new Trace::NativeTrace(this);
-};