Home | History | Annotate | Download | only in m_sigframe

Lines Matching defs:tst

354    ThreadState *tst = VG_(get_ThreadState)(tid);
362 uc->uc_stack = tst->altstack;
365 // FIXME: save_i387(&tst->arch, fpstate);
367 # define SC2(reg,REG) sc->reg = tst->arch.vex.guest_##REG
384 sc->eflags = LibVEX_GuestX86_get_eflags(&tst->arch.vex);
398 ThreadState *tst,
404 frame->vex_shadow1 = tst->arch.vex_shadow1;
405 frame->vex_shadow2 = tst->arch.vex_shadow2;
407 frame->vex = tst->arch.vex;
409 frame->mask = tst->sig_mask;
415 static Addr build_sigframe(ThreadState *tst,
436 if (! ML_(sf_maybe_extend_stack)(tst, esp, sizeof(*frame), flags))
440 VG_TRACK( pre_mem_write, Vg_CoreSignal, tst->tid, "signal handler frame",
458 synth_ucontext(tst->tid, siginfo, trapno, err, mask, &uc, &frame->fpstate);
464 VG_TRACK( post_mem_write, Vg_CoreSignal, tst->tid,
467 build_vg_sigframe(&frame->vg, tst, flags, sigNo);
473 static Addr build_rt_sigframe(ThreadState *tst,
493 if (! ML_(sf_maybe_extend_stack)(tst, esp, sizeof(*frame), flags))
497 VG_TRACK( pre_mem_write, Vg_CoreSignal, tst->tid, "rt signal handler frame",
522 = (void*)tst->arch.vex.guest_EIP;
524 synth_ucontext(tst->tid, siginfo, trapno, err, mask,
527 VG_TRACK( post_mem_write, Vg_CoreSignal, tst->tid,
530 build_vg_sigframe(&frame->vg, tst, flags, sigNo);
548 ThreadState* tst = VG_(get_ThreadState)(tid);
551 esp = build_rt_sigframe(tst, esp_top_of_frame, siginfo, siguc,
554 esp = build_sigframe(tst, esp_top_of_frame, siginfo, siguc,
558 /* tst->m_esp = esp; also notify the tool we've updated ESP */
563 tst->arch.vex.guest_EIP = (Addr) handler;
570 esp, tst->arch.vex.guest_EIP, (Int)tst->status);
581 Bool restore_vg_sigframe ( ThreadState *tst,
588 tst->tid);
590 VG_(synth_fault)(tst->tid);
594 tst->sig_mask = frame->mask;
595 tst->tmp_sig_mask = frame->mask;
596 tst->arch.vex_shadow1 = frame->vex_shadow1;
597 tst->arch.vex_shadow2 = frame->vex_shadow2;
599 tst->arch.vex = frame->vex;
606 void restore_sigcontext( ThreadState *tst,
610 tst->arch.vex.guest_EAX = sc->eax;
611 tst->arch.vex.guest_ECX = sc->ecx;
612 tst->arch.vex.guest_EDX = sc->edx;
613 tst->arch.vex.guest_EBX = sc->ebx;
614 tst->arch.vex.guest_EBP = sc->ebp;
615 tst->arch.vex.guest_ESP = sc->esp;
616 tst->arch.vex.guest_ESI = sc->esi;
617 tst->arch.vex.guest_EDI = sc->edi;
618 //:: tst->arch.vex.guest_eflags = sc->eflags;
619 tst->arch.vex.guest_EIP = sc->eip;
620 tst->arch.vex.guest_CS = sc->cs;
621 tst->arch.vex.guest_SS = sc->ss;
622 tst->arch.vex.guest_DS = sc->ds;
623 tst->arch.vex.guest_ES = sc->es;
624 tst->arch.vex.guest_FS = sc->fs;
625 tst->arch.vex.guest_GS = sc->gs;
627 //:: restore_i387(&tst->arch, fpstate);
632 SizeT restore_sigframe ( ThreadState *tst,
635 if (restore_vg_sigframe(tst, &frame->vg, sigNo))
636 restore_sigcontext(tst, &frame->sigContext, &frame->fpstate);
642 SizeT restore_rt_sigframe ( ThreadState *tst,
645 if (restore_vg_sigframe(tst, &frame->vg, sigNo))
646 restore_sigcontext(tst, &frame->uContext.uc_mcontext, &frame->fpstate);
656 ThreadState* tst;
660 tst = VG_(get_ThreadState)(tid);
663 esp = tst->arch.vex.guest_ESP;
666 size = restore_sigframe(tst, (struct sigframe *)esp, &sigNo);
668 size = restore_rt_sigframe(tst, (struct rt_sigframe *)esp, &sigNo);
677 tid, isRT, tst->arch.vex.guest_EIP);