Lines Matching refs:tc

151 I386Process::syscall(int64_t callnum, ThreadContext *tc, Fault *fault)
153 PCState pc = tc->pcState();
158 tc->pcState(pc);
160 X86Process::syscall(callnum, tc, fault);
357 ThreadContext * tc = system->getThreadContext(contextIds[i]);
359 tc->setMiscReg(MISCREG_CS, cs);
360 tc->setMiscReg(MISCREG_DS, ds);
361 tc->setMiscReg(MISCREG_ES, ds);
362 tc->setMiscReg(MISCREG_FS, ds);
363 tc->setMiscReg(MISCREG_GS, ds);
364 tc->setMiscReg(MISCREG_SS, ds);
367 tc->setMiscReg(MISCREG_TSL, 0);
371 tc->setMiscReg(MISCREG_TSL_ATTR, tslAttr);
373 tc->setMiscReg(MISCREG_TSG_BASE, GDTVirtAddr);
374 tc->setMiscReg(MISCREG_TSG_LIMIT, 8 * numGDTEntries - 1);
376 tc->setMiscReg(MISCREG_TR, tssSel);
377 tc->setMiscReg(MISCREG_TR_BASE, tss_base_addr);
378 tc->setMiscReg(MISCREG_TR_EFF_BASE, 0);
379 tc->setMiscReg(MISCREG_TR_LIMIT, tss_limit);
380 tc->setMiscReg(MISCREG_TR_ATTR, tss_attr);
383 installSegDesc(tc, SEGMENT_REG_CS, csDesc, true);
384 installSegDesc(tc, SEGMENT_REG_DS, dsDesc, true);
385 installSegDesc(tc, SEGMENT_REG_ES, dsDesc, true);
386 installSegDesc(tc, SEGMENT_REG_FS, dsDesc, true);
387 installSegDesc(tc, SEGMENT_REG_GS, dsDesc, true);
388 installSegDesc(tc, SEGMENT_REG_SS, dsDesc, true);
397 tc->setMiscReg(MISCREG_EFER, efer);
414 tc->setMiscReg(MISCREG_CR0, cr0);
417 tc->setMiscReg(MISCREG_CR2, cr2);
420 tc->setMiscReg(MISCREG_CR3, cr3);
437 tc->setMiscReg(MISCREG_CR4, cr4);
440 tc->setMiscReg(MISCREG_CR8, cr8);
442 tc->setMiscReg(MISCREG_MXCSR, 0x1f80);
444 tc->setMiscReg(MISCREG_APIC_BASE, 0xfee00900);
446 tc->setMiscReg(MISCREG_TSG_BASE, GDTVirtAddr);
447 tc->setMiscReg(MISCREG_TSG_LIMIT, 0xffff);
449 tc->setMiscReg(MISCREG_IDTR_BASE, IDTVirtAddr);
450 tc->setMiscReg(MISCREG_IDTR_LIMIT, 0xffff);
454 tc->setMiscReg(MISCREG_STAR, star);
456 tc->setMiscReg(MISCREG_LSTAR, lstar);
458 tc->setMiscReg(MISCREG_SF_MASK, sfmask);
568 ThreadContext * tc = system->getThreadContext(contextIds[i]);
586 tc->setMiscRegNoEffect(MISCREG_SEG_BASE(seg), 0);
587 tc->setMiscRegNoEffect(MISCREG_SEG_EFF_BASE(seg), 0);
588 tc->setMiscRegNoEffect(MISCREG_SEG_ATTR(seg), dataAttr);
605 tc->setMiscRegNoEffect(MISCREG_CS_ATTR, csAttr);
614 tc->setMiscReg(MISCREG_EFER, efer);
631 tc->setMiscReg(MISCREG_CR0, cr0);
633 tc->setMiscReg(MISCREG_MXCSR, 0x1f80);
679 ThreadContext * tc = system->getThreadContext(contextIds[i]);
697 tc->setMiscRegNoEffect(MISCREG_SEG_BASE(seg), 0);
698 tc->setMiscRegNoEffect(MISCREG_SEG_EFF_BASE(seg), 0);
699 tc->setMiscRegNoEffect(MISCREG_SEG_ATTR(seg), dataAttr);
700 tc->setMiscRegNoEffect(MISCREG_SEG_SEL(seg), 0xB);
701 tc->setMiscRegNoEffect(MISCREG_SEG_LIMIT(seg), (uint32_t)(-1));
718 tc->setMiscRegNoEffect(MISCREG_CS_ATTR, csAttr);
720 tc->setMiscRegNoEffect(MISCREG_TSG_BASE, _gdtStart);
721 tc->setMiscRegNoEffect(MISCREG_TSG_EFF_BASE, _gdtStart);
722 tc->setMiscRegNoEffect(MISCREG_TSG_LIMIT, _gdtStart + _gdtSize - 1);
725 tc->setMiscRegNoEffect(MISCREG_TSL, 0);
734 tc->setMiscReg(MISCREG_EFER, efer);
751 tc->setMiscReg(MISCREG_CR0, cr0);
753 tc->setMiscReg(MISCREG_MXCSR, 0x1f80);
1033 ThreadContext *tc = system->getThreadContext(contextIds[0]);
1035 tc->setIntReg(StackPointerReg, stack_min);
1039 tc->pcState(getStartPC());
1065 X86Process::setSyscallReturn(ThreadContext *tc, SyscallReturn retval)
1067 tc->setIntReg(INTREG_RAX, retval.encodedValue());
1071 X86_64Process::getSyscallArg(ThreadContext *tc, int &i)
1074 return tc->readIntReg(ArgumentReg[i++]);
1078 X86_64Process::setSyscallArg(ThreadContext *tc, int i, RegVal val)
1081 return tc->setIntReg(ArgumentReg[i], val);
1093 I386Process::getSyscallArg(ThreadContext *tc, int &i)
1096 return tc->readIntReg(ArgumentReg32[i++]);
1100 I386Process::getSyscallArg(ThreadContext *tc, int &i, int width)
1104 uint64_t retVal = tc->readIntReg(ArgumentReg32[i++]) & mask(32);
1106 retVal |= ((uint64_t)tc->readIntReg(ArgumentReg[i++]) << 32);
1111 I386Process::setSyscallArg(ThreadContext *tc, int i, RegVal val)
1114 return tc->setIntReg(ArgumentReg[i], val);