]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Use renamed and improved vex-supplied guest-state-handling fns.
authorJulian Seward <jseward@acm.org>
Mon, 25 Oct 2004 15:34:19 +0000 (15:34 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 25 Oct 2004 15:34:19 +0000 (15:34 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@425

VEX/head20041019/coregrind/x86/signal.c
VEX/head20041019/coregrind/x86/state.c

index 053ab598d4768d6223969f0fcec438e17b357656..f91670957e1de9e0cda8c4e94b0d7e6635ab3f56 100644 (file)
@@ -144,7 +144,7 @@ static void synth_ucontext(ThreadId tid, const vki_ksiginfo_t *si,
 
    SC2(eip,EIP);
    SC2(cs,CS);
-   sc->eflags = vex_to_eflags(&tst->arch.vex);
+   sc->eflags = LibVEX_GuestX86_get_eflags(&tst->arch.vex);
    SC2(ss,SS);
    /* XXX esp_at_signal */
    /* XXX trapno */
@@ -334,7 +334,7 @@ Int VGA_(pop_signal_frame)(ThreadId tid)
 
 void VGA_(fill_elfregs_from_BB)(struct user_regs_struct* regs)
 {
-   regs->eflags = vex_to_eflags(BASEBLOCK_VEX);
+   regs->eflags = LibVEX_GuestX86_get_eflags(BASEBLOCK_VEX);
    regs->esp    = BASEBLOCK_VEX->guest_ESP;
    regs->eip    = BASEBLOCK_VEX->guest_EIP;
 
@@ -358,7 +358,7 @@ void VGA_(fill_elfregs_from_BB)(struct user_regs_struct* regs)
 void VGA_(fill_elfregs_from_tst)(struct user_regs_struct* regs, 
                                  arch_thread_t* arch)
 {
-   regs->eflags = vex_to_eflags(&arch->vex);
+   regs->eflags = LibVEX_GuestX86_get_eflags(&arch->vex);
    regs->esp    = arch->vex.guest_ESP;
    regs->eip    = arch->vex.guest_EIP;
 
index 2dfc316046abf2923478830e88f09983ae434c5f..f5ff61951ba1db61e9a38c39e0c1b3631cc2facf 100644 (file)
@@ -112,33 +112,13 @@ void VGA_(init_low_baseBlock) ( Addr client_eip, Addr esp_at_startup )
    /* WORD offsets in this column */
    VGOFF_(m_vex) = VG_(alloc_BaB)( (3 + sizeof(VexGuestX86State)) / 4 );
 
-   /* Set up the new vex integer state in a marginally safe way. */
+   /* Zero out the initial state, and set up the simulated FPU in a
+      sane way. */
+   LibVEX_GuestX86_initialise(BASEBLOCK_VEX);
+
+   /* Put essential stuff into the new state. */
    BASEBLOCK_VEX->guest_ESP = esp_at_startup;
    BASEBLOCK_VEX->guest_EIP = client_eip;
-   BASEBLOCK_VEX->guest_CC_OP = 0; /* CC_OP_COPY */
-   BASEBLOCK_VEX->guest_CC_SRC = 0;
-   BASEBLOCK_VEX->guest_CC_DST = 0;
-
-   BASEBLOCK_VEX->guest_EAX = BASEBLOCK_VEX->guest_EBX
-                            = BASEBLOCK_VEX->guest_ECX
-                            = BASEBLOCK_VEX->guest_EDX
-                            = BASEBLOCK_VEX->guest_ESI
-                            = BASEBLOCK_VEX->guest_EDI
-                            = BASEBLOCK_VEX->guest_EBP
-                            = 0;
-
-   BASEBLOCK_VEX->guest_DFLAG = 1; /* forwards */
-
-   BASEBLOCK_VEX->guest_CS = BASEBLOCK_VEX->guest_DS
-                           = BASEBLOCK_VEX->guest_ES
-                           = BASEBLOCK_VEX->guest_FS
-                           = BASEBLOCK_VEX->guest_GS
-                           = BASEBLOCK_VEX->guest_SS
-                           = 0;
-
-   /* set up an initial FPU state (doesn't really matter what it is,
-      so long as it's somewhat valid) */
-   vex_initialise_x87(BASEBLOCK_VEX);
 
    if (VG_(needs).shadow_regs) {
       /* 9   */ VGOFF_(sh_eax)    = VG_(alloc_BaB_1_set)(0);
@@ -491,7 +471,7 @@ Int VGA_(ptrace_setregs_from_BB)(Int pid)
    regs.edi    = BASEBLOCK_VEX->guest_EDI;
    regs.ebp    = BASEBLOCK_VEX->guest_EBP;
    regs.esp    = BASEBLOCK_VEX->guest_ESP;
-   regs.eflags = vex_to_eflags(BASEBLOCK_VEX);
+   regs.eflags = LibVEX_GuestX86_get_eflags(BASEBLOCK_VEX);
    regs.eip    = BASEBLOCK_VEX->guest_EIP;
 
    return ptrace(PTRACE_SETREGS, pid, NULL, &regs);
@@ -515,7 +495,7 @@ Int VGA_(ptrace_setregs_from_tst)(Int pid, arch_thread_t* arch)
    regs.edi    = arch->vex.guest_EDI;
    regs.ebp    = arch->vex.guest_EBP;
    regs.esp    = arch->vex.guest_ESP;
-   regs.eflags = vex_to_eflags(&arch->vex);
+   regs.eflags = LibVEX_GuestX86_get_eflags(&arch->vex);
    regs.eip    = arch->vex.guest_EIP;
 
    return ptrace(PTRACE_SETREGS, pid, NULL, &regs);