summaryrefslogtreecommitdiff
path: root/cpu-exec.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2010-01-15 09:42:09 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2010-01-19 16:31:03 -0600
commit6113d6d3169393c323ac4c82d756a850145a5e7a (patch)
treefcd06b7027d32d435149b064ee62d511768d39b5 /cpu-exec.c
parent34dec6a5608e3a878966fb0c0369a0dbbf6e3d9b (diff)
change while to if
The while loop will be executed exactly 0 or 1 times, depending on env->exit_request. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'cpu-exec.c')
-rw-r--r--cpu-exec.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/cpu-exec.c b/cpu-exec.c
index 44d45fcd36..415988644f 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -596,17 +596,13 @@ int cpu_exec(CPUState *env1)
tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb);
}
spin_unlock(&tb_lock);
- env->current_tb = tb;
- assert (env->current_tb);
/* cpu_interrupt might be called while translating the
TB, but before it is linked into a potentially
infinite loop and becomes env->current_tb. Avoid
starting execution if there is a pending interrupt. */
- if (unlikely (env->exit_request))
- env->current_tb = NULL;
-
- while (env->current_tb) {
+ if (!unlikely (env->exit_request)) {
+ env->current_tb = tb;
tc_ptr = tb->tc_ptr;
/* execute the generated code */
#if defined(__sparc__) && !defined(CONFIG_SOLARIS)
@@ -643,8 +639,8 @@ int cpu_exec(CPUState *env1)
cpu_loop_exit();
}
}
- assert (env->current_tb == NULL);
}
+ assert (env->current_tb == NULL);
/* reset soft MMU for next block (it can currently
only be set by a memory fault) */
} /* for(;;) */