Lines Matching refs:tc

71 SparcProcess::handleTrap(int trapNum, ThreadContext *tc, Fault *fault)
73 PCState pc = tc->pcState();
82 flushWindows(tc);
116 ThreadContext *tc = system->getThreadContext(contextIds[0]);
120 tc->setMiscRegNoEffect(MISCREG_FSR, 0);
122 tc->setMiscRegNoEffect(MISCREG_TICK, 0);
129 // tc->setMiscRegNoEffect(MISCREG_OTHERWIN, 0);
130 tc->setIntReg(NumIntArchRegs + 6, 0);
132 // tc->setMiscRegNoEffect(MISCREG_CANRESTORE, 0);
133 tc->setIntReg(NumIntArchRegs + 4, 0);
135 // tc->setMiscRegNoEffect(MISCREG_CANSAVE, NWindows - 2);
136 tc->setIntReg(NumIntArchRegs + 3, NWindows - 2);
138 // tc->setMiscRegNoEffect(MISCREG_CLEANWIN, NWindows);
139 tc->setIntReg(NumIntArchRegs + 5, NWindows);
141 tc->setMiscReg(MISCREG_CWP, 0);
143 // tc->setMiscRegNoEffect(MISCREG_WSTATE, 0);
144 tc->setIntReg(NumIntArchRegs + 7, 0);
146 tc->setMiscRegNoEffect(MISCREG_TL, 0);
148 tc->setMiscReg(MISCREG_ASI, ASI_PRIMARY);
151 tc->setMiscReg(MISCREG_MMU_P_CONTEXT, _pid);
157 tc->setMiscRegNoEffect(MISCREG_MMU_LSU_CTRL, 15);
165 ThreadContext *tc = system->getThreadContext(contextIds[0]);
170 tc->setMiscReg(MISCREG_PSTATE, pstate);
180 ThreadContext *tc = system->getThreadContext(contextIds[0]);
184 tc->setMiscReg(MISCREG_PSTATE, pstate);
395 ThreadContext *tc = system->getThreadContext(contextIds[0]);
398 // tc->setIntReg(ArgumentReg[0], argc);
399 // tc->setIntReg(ArgumentReg[1], argv_array_base);
400 tc->setIntReg(StackPointerReg, memState->getStackMin() - StackBias);
404 tc->setIntReg(1, 0);
406 tc->pcState(getStartPC());
436 void Sparc32Process::flushWindows(ThreadContext *tc)
438 RegVal Cansave = tc->readIntReg(NumIntArchRegs + 3);
439 RegVal Canrestore = tc->readIntReg(NumIntArchRegs + 4);
440 RegVal Otherwin = tc->readIntReg(NumIntArchRegs + 6);
441 RegVal CWP = tc->readMiscReg(MISCREG_CWP);
448 tc->setMiscReg(MISCREG_CWP, CWP);
450 RegVal sp = tc->readIntReg(StackPointerReg);
452 uint32_t regVal = tc->readIntReg(index);
454 if (!tc->getVirtProxy().tryWriteBlob(
465 tc->setIntReg(NumIntArchRegs + 3, Cansave);
466 tc->setIntReg(NumIntArchRegs + 4, Canrestore);
467 tc->setMiscReg(MISCREG_CWP, origCWP);
471 Sparc64Process::flushWindows(ThreadContext *tc)
473 RegVal Cansave = tc->readIntReg(NumIntArchRegs + 3);
474 RegVal Canrestore = tc->readIntReg(NumIntArchRegs + 4);
475 RegVal Otherwin = tc->readIntReg(NumIntArchRegs + 6);
476 RegVal CWP = tc->readMiscReg(MISCREG_CWP);
483 tc->setMiscReg(MISCREG_CWP, CWP);
485 RegVal sp = tc->readIntReg(StackPointerReg);
487 RegVal regVal = tc->readIntReg(index);
489 if (!tc->getVirtProxy().tryWriteBlob(
500 tc->setIntReg(NumIntArchRegs + 3, Cansave);
501 tc->setIntReg(NumIntArchRegs + 4, Canrestore);
502 tc->setMiscReg(MISCREG_CWP, origCWP);
506 Sparc32Process::getSyscallArg(ThreadContext *tc, int &i)
509 return bits(tc->readIntReg(FirstArgumentReg + i++), 31, 0);
513 Sparc32Process::setSyscallArg(ThreadContext *tc, int i, RegVal val)
516 tc->setIntReg(FirstArgumentReg + i, bits(val, 31, 0));
520 Sparc64Process::getSyscallArg(ThreadContext *tc, int &i)
523 return tc->readIntReg(FirstArgumentReg + i++);
527 Sparc64Process::setSyscallArg(ThreadContext *tc, int i, RegVal val)
530 tc->setIntReg(FirstArgumentReg + i, val);
534 SparcProcess::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
539 PSTATE pstate = tc->readMiscRegNoEffect(MISCREG_PSTATE);
542 tc->setIntReg(NumIntArchRegs + 2,
543 tc->readIntReg(NumIntArchRegs + 2) & 0xEE);
547 tc->setIntReg(ReturnValueReg, val);
550 tc->setIntReg(NumIntArchRegs + 2,
551 tc->readIntReg(NumIntArchRegs + 2) | 0x11);
555 tc->setIntReg(ReturnValueReg, val);