Revision 52621688 target-i386/helper.c

b/target-i386/helper.c
4120 4120
        if (loglevel & CPU_LOG_TB_IN_ASM)
4121 4121
            fprintf(logfile, " %#x %#x\n", env->exception_index, env->error_code);
4122 4122
    }
4123
    if (int_ctl & V_IRQ_MASK)
4123
    if ((int_ctl & V_IRQ_MASK) || (env->intercept & INTERCEPT_VINTR)) {
4124 4124
        env->interrupt_request |= CPU_INTERRUPT_VIRQ;
4125
    }
4125 4126

  
4126 4127
    cpu_loop_exit();
4127 4128
}
......
4283 4284
                ldq_phys(env->vm_vmcb + offsetof(struct vmcb, control.exit_info_2)),
4284 4285
                EIP);
4285 4286

  
4287
    if(env->hflags & HF_INHIBIT_IRQ_MASK) {
4288
        stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_state), SVM_INTERRUPT_SHADOW_MASK);
4289
        env->hflags &= ~HF_INHIBIT_IRQ_MASK;
4290
    } else {
4291
        stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_state), 0);
4292
    }
4293

  
4286 4294
    /* Save the VM state in the vmcb */
4287 4295
    SVM_SAVE_SEG(env->vm_vmcb, segs[R_ES], es);
4288 4296
    SVM_SAVE_SEG(env->vm_vmcb, segs[R_CS], cs);

Also available in: Unified diff