Diff for /qemu/cpu-exec.c between versions 1.1.1.7 and 1.1.1.8

version 1.1.1.7, 2018/04/24 16:50:25 version 1.1.1.8, 2018/04/24 16:56:15
Line 311  int cpu_exec(CPUState *env1) Line 311  int cpu_exec(CPUState *env1)
                 env->exception_index = -1;                  env->exception_index = -1;
             }              }
 #ifdef USE_KQEMU  #ifdef USE_KQEMU
             if (kqemu_is_ok(env) && env->interrupt_request == 0) {              if (kqemu_is_ok(env) && env->interrupt_request == 0 && env->exit_request == 0) {
                 int ret;                  int ret;
                 env->eflags = env->eflags | helper_cc_compute_all(CC_OP) | (DF & DF_MASK);                  env->eflags = env->eflags | helper_cc_compute_all(CC_OP) | (DF & DF_MASK);
                 ret = kqemu_cpu_exec(env);                  ret = kqemu_cpu_exec(env);
Line 326  int cpu_exec(CPUState *env1) Line 326  int cpu_exec(CPUState *env1)
                 } else if (ret == 2) {                  } else if (ret == 2) {
                     /* softmmu execution needed */                      /* softmmu execution needed */
                 } else {                  } else {
                     if (env->interrupt_request != 0) {                      if (env->interrupt_request != 0 || env->exit_request != 0) {
                         /* hardware interrupt will be executed just after */                          /* hardware interrupt will be executed just after */
                     } else {                      } else {
                         /* otherwise, we restart */                          /* otherwise, we restart */
Line 525  int cpu_exec(CPUState *env1) Line 525  int cpu_exec(CPUState *env1)
                            the program flow was changed */                             the program flow was changed */
                         next_tb = 0;                          next_tb = 0;
                     }                      }
                     if (interrupt_request & CPU_INTERRUPT_EXIT) {                  }
                         env->interrupt_request &= ~CPU_INTERRUPT_EXIT;                  if (unlikely(env->exit_request)) {
                         env->exception_index = EXCP_INTERRUPT;                      env->exit_request = 0;
                         cpu_loop_exit();                      env->exception_index = EXCP_INTERRUPT;
                     }                      cpu_loop_exit();
                 }                  }
 #ifdef DEBUG_EXEC  #ifdef DEBUG_EXEC
                 if (qemu_loglevel_mask(CPU_LOG_TB_CPU)) {                  if (qemu_loglevel_mask(CPU_LOG_TB_CPU)) {
Line 599  int cpu_exec(CPUState *env1) Line 599  int cpu_exec(CPUState *env1)
                    TB, but before it is linked into a potentially                     TB, but before it is linked into a potentially
                    infinite loop and becomes env->current_tb. Avoid                     infinite loop and becomes env->current_tb. Avoid
                    starting execution if there is a pending interrupt. */                     starting execution if there is a pending interrupt. */
                 if (unlikely (env->interrupt_request & CPU_INTERRUPT_EXIT))                  if (unlikely (env->exit_request))
                     env->current_tb = NULL;                      env->current_tb = NULL;
   
                 while (env->current_tb) {                  while (env->current_tb) {

Removed from v.1.1.1.7  
changed lines
  Added in v.1.1.1.8


unix.superglobalmegacorp.com