浏览代码

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
aliguori 17 年之前
父节点
当前提交
becfc39041
共有 2 个文件被更改,包括 7 次插入10 次删除
  1. 2 10
      cpu-exec.c
  2. 5 0
      kvm-all.c

+ 2 - 10
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 */

+ 5 - 0
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;
 }