|
@@ -588,8 +588,9 @@ static inline void tb_add_jump(TranslationBlock *tb, int n,
|
|
|
|
|
|
static inline bool cpu_handle_halt(CPUState *cpu)
|
|
static inline bool cpu_handle_halt(CPUState *cpu)
|
|
{
|
|
{
|
|
|
|
+#ifndef CONFIG_USER_ONLY
|
|
if (cpu->halted) {
|
|
if (cpu->halted) {
|
|
-#if defined(TARGET_I386) && !defined(CONFIG_USER_ONLY)
|
|
|
|
|
|
+#if defined(TARGET_I386)
|
|
if (cpu->interrupt_request & CPU_INTERRUPT_POLL) {
|
|
if (cpu->interrupt_request & CPU_INTERRUPT_POLL) {
|
|
X86CPU *x86_cpu = X86_CPU(cpu);
|
|
X86CPU *x86_cpu = X86_CPU(cpu);
|
|
qemu_mutex_lock_iothread();
|
|
qemu_mutex_lock_iothread();
|
|
@@ -597,13 +598,14 @@ static inline bool cpu_handle_halt(CPUState *cpu)
|
|
cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL);
|
|
cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL);
|
|
qemu_mutex_unlock_iothread();
|
|
qemu_mutex_unlock_iothread();
|
|
}
|
|
}
|
|
-#endif
|
|
|
|
|
|
+#endif /* TARGET_I386 */
|
|
if (!cpu_has_work(cpu)) {
|
|
if (!cpu_has_work(cpu)) {
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
cpu->halted = 0;
|
|
cpu->halted = 0;
|
|
}
|
|
}
|
|
|
|
+#endif /* !CONFIG_USER_ONLY */
|
|
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|