Revision 52621688 cpu-exec.c

b/cpu-exec.c
409 409
                        !(env->hflags & HF_INHIBIT_IRQ_MASK)) {
410 410
                        int intno;
411 411
                        svm_check_intercept(SVM_EXIT_INTR);
412
                        env->interrupt_request &= ~CPU_INTERRUPT_HARD;
412
                        env->interrupt_request &= ~(CPU_INTERRUPT_HARD | CPU_INTERRUPT_VIRQ);
413 413
                        intno = cpu_get_pic_interrupt(env);
414 414
                        if (loglevel & CPU_LOG_TB_IN_ASM) {
415 415
                            fprintf(logfile, "Servicing hardware INT=0x%02x\n", intno);
......
428 428
                         int intno;
429 429
                         /* FIXME: this should respect TPR */
430 430
                         env->interrupt_request &= ~CPU_INTERRUPT_VIRQ;
431
                         stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_ctl),
432
                                  ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_ctl)) & ~V_IRQ_MASK);
431
                         svm_check_intercept(SVM_EXIT_VINTR);
433 432
                         intno = ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_vector));
434 433
                         if (loglevel & CPU_LOG_TB_IN_ASM)
435 434
                             fprintf(logfile, "Servicing virtual hardware INT=0x%02x\n", intno);
436 435
	                 do_interrupt(intno, 0, 0, -1, 1);
436
                         stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_ctl),
437
                                  ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.int_ctl)) & ~V_IRQ_MASK);
437 438
#if defined(__sparc__) && !defined(HOST_SOLARIS)
438 439
                         tmp_T0 = 0;
439 440
#else

Also available in: Unified diff