提交 6113d6d3 编写于 作者: P Paolo Bonzini 提交者: Anthony Liguori

change while to if

The while loop will be executed exactly 0 or 1 times, depending on
env->exit_request.
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 34dec6a5
...@@ -596,17 +596,13 @@ int cpu_exec(CPUState *env1) ...@@ -596,17 +596,13 @@ int cpu_exec(CPUState *env1)
tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb); tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb);
} }
spin_unlock(&tb_lock); spin_unlock(&tb_lock);
env->current_tb = tb;
assert (env->current_tb);
/* cpu_interrupt might be called while translating the /* cpu_interrupt might be called while translating the
TB, but before it is linked into a potentially TB, but before it is linked into a potentially
infinite loop and becomes env->current_tb. Avoid infinite loop and becomes env->current_tb. Avoid
starting execution if there is a pending interrupt. */ starting execution if there is a pending interrupt. */
if (unlikely (env->exit_request)) if (!unlikely (env->exit_request)) {
env->current_tb = NULL; env->current_tb = tb;
while (env->current_tb) {
tc_ptr = tb->tc_ptr; tc_ptr = tb->tc_ptr;
/* execute the generated code */ /* execute the generated code */
#if defined(__sparc__) && !defined(CONFIG_SOLARIS) #if defined(__sparc__) && !defined(CONFIG_SOLARIS)
...@@ -643,8 +639,8 @@ int cpu_exec(CPUState *env1) ...@@ -643,8 +639,8 @@ int cpu_exec(CPUState *env1)
cpu_loop_exit(); cpu_loop_exit();
} }
} }
assert (env->current_tb == NULL);
} }
assert (env->current_tb == NULL);
/* reset soft MMU for next block (it can currently /* reset soft MMU for next block (it can currently
only be set by a memory fault) */ only be set by a memory fault) */
} /* for(;;) */ } /* for(;;) */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册