summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpu-exec.c3
-rw-r--r--cpus.c3
2 files changed, 3 insertions, 3 deletions
diff --git a/cpu-exec.c b/cpu-exec.c
index 5f88f3fa89..d170566cfd 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -237,9 +237,8 @@ int cpu_exec(CPUState *env1)
barrier();
env = env1;
- if (exit_request) {
+ if (unlikely(exit_request)) {
env->exit_request = 1;
- exit_request = 0;
}
#if defined(TARGET_I386)
diff --git a/cpus.c b/cpus.c
index b95cc195d0..7533668d2b 100644
--- a/cpus.c
+++ b/cpus.c
@@ -770,7 +770,7 @@ bool tcg_cpu_exec(void)
if (next_cpu == NULL)
next_cpu = first_cpu;
- for (; next_cpu != NULL; next_cpu = next_cpu->next_cpu) {
+ for (; next_cpu != NULL && !exit_request; next_cpu = next_cpu->next_cpu) {
CPUState *env = cur_cpu = next_cpu;
qemu_clock_enable(vm_clock,
@@ -789,6 +789,7 @@ bool tcg_cpu_exec(void)
break;
}
}
+ exit_request = 0;
return tcg_has_work();
}