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

version 1.1.1.7, 2018/04/24 16:50:47 version 1.1.1.8, 2018/04/24 16:56:43
Line 523  static int cpu_common_load(QEMUFile *f,  Line 523  static int cpu_common_load(QEMUFile *f, 
   
     qemu_get_be32s(f, &env->halted);      qemu_get_be32s(f, &env->halted);
     qemu_get_be32s(f, &env->interrupt_request);      qemu_get_be32s(f, &env->interrupt_request);
       env->interrupt_request &= ~CPU_INTERRUPT_EXIT;
     tlb_flush(env, 1);      tlb_flush(env, 1);
   
     return 0;      return 0;
Line 1501  void cpu_interrupt(CPUState *env, int ma Line 1502  void cpu_interrupt(CPUState *env, int ma
 #endif  #endif
     int old_mask;      int old_mask;
   
       if (mask & CPU_INTERRUPT_EXIT) {
           env->exit_request = 1;
           mask &= ~CPU_INTERRUPT_EXIT;
       }
   
     old_mask = env->interrupt_request;      old_mask = env->interrupt_request;
     /* FIXME: This is probably not threadsafe.  A different thread could  
        be in the middle of a read-modify-write operation.  */  
     env->interrupt_request |= mask;      env->interrupt_request |= mask;
 #if defined(USE_NPTL)  #if defined(USE_NPTL)
     /* FIXME: TB unchaining isn't SMP safe.  For now just ignore the      /* FIXME: TB unchaining isn't SMP safe.  For now just ignore the
Line 1514  void cpu_interrupt(CPUState *env, int ma Line 1518  void cpu_interrupt(CPUState *env, int ma
     if (use_icount) {      if (use_icount) {
         env->icount_decr.u16.high = 0xffff;          env->icount_decr.u16.high = 0xffff;
 #ifndef CONFIG_USER_ONLY  #ifndef CONFIG_USER_ONLY
         /* CPU_INTERRUPT_EXIT isn't a real interrupt.  It just means  
            an async event happened and we need to process it.  */  
         if (!can_do_io(env)          if (!can_do_io(env)
             && (mask & ~(old_mask | CPU_INTERRUPT_EXIT)) != 0) {              && (mask & ~old_mask) != 0) {
             cpu_abort(env, "Raised interrupt while not in I/O function");              cpu_abort(env, "Raised interrupt while not in I/O function");
         }          }
 #endif  #endif

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


unix.superglobalmegacorp.com