Revision fc2b4c48 exec-i386.c

b/exec-i386.c
330 330
#endif
331 331
    
332 332
    /* put eflags in CPU temporary format */
333
    T0 = env->eflags;
334
    op_movl_eflags_T0();
333
    CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
334
    DF = 1 - (2 * ((env->eflags >> 10) & 1));
335 335
    CC_OP = CC_OP_EFLAGS;
336
    env->eflags &= ~(DF_MASK | CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
336 337
    env->interrupt_request = 0;
337 338
    
338 339
    /* prepare setjmp context for exception handling */
......
354 355
                       (unsigned long)env->seg_cache[R_ES].base |
355 356
                       (unsigned long)env->seg_cache[R_SS].base) != 0) << 
356 357
                GEN_FLAG_ADDSEG_SHIFT;
358
            flags |= (env->eflags & VM_MASK) >> (17 - GEN_FLAG_VM_SHIFT);
357 359
            cs_base = env->seg_cache[R_CS].base;
358 360
            pc = cs_base + env->eip;
359 361
            tb = tb_find(&ptb, (unsigned long)pc, (unsigned long)cs_base, 
......
390 392
    ret = env->exception_index;
391 393

  
392 394
    /* restore flags in standard format */
393
    op_movl_T0_eflags();
394
    env->eflags = T0;
395
    env->eflags = env->eflags | cc_table[CC_OP].compute_all() | (DF & DF_MASK);
395 396

  
396 397
    /* restore global registers */
397 398
#ifdef reg_EAX
......
489 490
/* for glibc 2.1 */
490 491
#define REG_EIP EIP
491 492
#endif
492
    pc = uc->uc_mcontext.gregs[EIP];
493
    pc = uc->uc_mcontext.gregs[REG_EIP];
493 494
    pold_set = &uc->uc_sigmask;
494 495
    return handle_cpu_signal(pc, pold_set);
495 496
#else

Also available in: Unified diff