Revision 6a4955a8 target-i386/exec.h

b/target-i386/exec.h
338 338
#endif
339 339
}
340 340

  
341
static inline int cpu_has_work(CPUState *env)
342
{
343
    int work;
344

  
345
    work = (env->interrupt_request & CPU_INTERRUPT_HARD) &&
346
           (env->eflags & IF_MASK);
347
    work |= env->interrupt_request & CPU_INTERRUPT_NMI;
348

  
349
    return work;
350
}
351

  
341 352
static inline int cpu_halted(CPUState *env) {
342 353
    /* handle exit of HALTED state */
343 354
    if (!env->halted)
344 355
        return 0;
345 356
    /* disable halt condition */
346
    if (((env->interrupt_request & CPU_INTERRUPT_HARD) &&
347
         (env->eflags & IF_MASK)) ||
348
        (env->interrupt_request & CPU_INTERRUPT_NMI)) {
357
    if (cpu_has_work(env)) {
349 358
        env->halted = 0;
350 359
        return 0;
351 360
    }

Also available in: Unified diff