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