aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-10 15:55:14 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-10 15:55:14 +0000
commitbecfc3904194e76436ad0a60c2dde148e1927e4c (patch)
treea2649f5ff53bdfb590c28825ab4356dd3b944558
parent57951c27422fc41586a5d4032e05bb300cced78d (diff)
KVM: simplify kvm_cpu_exec hook
We don't need to use cpu_loop_exit() because we never use the condition codes so everything can be folded into a single case. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5669 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--cpu-exec.c12
-rw-r--r--kvm-all.c5
2 files changed, 7 insertions, 10 deletions
diff --git a/cpu-exec.c b/cpu-exec.c
index c6db5adf5e..2c77b923fd 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -369,16 +369,8 @@ int cpu_exec(CPUState *env1)
#endif
if (kvm_enabled()) {
- int ret;
- ret = kvm_cpu_exec(env);
- if ((env->interrupt_request & CPU_INTERRUPT_EXIT)) {
- env->interrupt_request &= ~CPU_INTERRUPT_EXIT;
- env->exception_index = EXCP_INTERRUPT;
- cpu_loop_exit();
- } else if (env->halted) {
- cpu_loop_exit();
- } else
- longjmp(env->jmp_env, 1);
+ kvm_cpu_exec(env);
+ longjmp(env->jmp_env, 1);
}
next_tb = 0; /* force lookup of first TB */
diff --git a/kvm-all.c b/kvm-all.c
index c3a46e2438..8575a4dee2 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -298,6 +298,11 @@ int kvm_cpu_exec(CPUState *env)
}
} while (ret > 0);
+ if ((env->interrupt_request & CPU_INTERRUPT_EXIT)) {
+ env->interrupt_request &= ~CPU_INTERRUPT_EXIT;
+ env->exception_index = EXCP_INTERRUPT;
+ }
+
return ret;
}