summary refs log tree commit diff stats
path: root/target-s390x/op_helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'target-s390x/op_helper.c')
-rw-r--r--target-s390x/op_helper.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/target-s390x/op_helper.c b/target-s390x/op_helper.c
index db03a7971f..cd33f99d21 100644
--- a/target-s390x/op_helper.c
+++ b/target-s390x/op_helper.c
@@ -24,6 +24,9 @@
 #include <string.h>
 #include "kvm.h"
 #include "qemu-timer.h"
+#ifdef CONFIG_KVM
+#include <linux/kvm.h>
+#endif
 
 /*****************************************************************************/
 /* Softmmu support */
@@ -70,7 +73,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr)
                 cpu_restore_state(tb, env, pc);
             }
         }
-        cpu_loop_exit();
+        cpu_loop_exit(env);
     }
     env = saved_env;
 }
@@ -89,7 +92,7 @@ void HELPER(exception)(uint32_t excp)
 {
     HELPER_LOG("%s: exception %d\n", __FUNCTION__, excp);
     env->exception_index = excp;
-    cpu_loop_exit();
+    cpu_loop_exit(env);
 }
 
 #ifndef CONFIG_USER_ONLY
@@ -2323,7 +2326,7 @@ void HELPER(tr)(uint32_t len, uint64_t array, uint64_t trans)
 void HELPER(load_psw)(uint64_t mask, uint64_t addr)
 {
     load_psw(env, mask, addr);
-    cpu_loop_exit();
+    cpu_loop_exit(env);
 }
 
 static void program_interrupt(CPUState *env, uint32_t code, int ilc)
@@ -2331,12 +2334,14 @@ static void program_interrupt(CPUState *env, uint32_t code, int ilc)
     qemu_log("program interrupt at %#" PRIx64 "\n", env->psw.addr);
 
     if (kvm_enabled()) {
+#ifdef CONFIG_KVM
         kvm_s390_interrupt(env, KVM_S390_PROGRAM_INT, code);
+#endif
     } else {
         env->int_pgm_code = code;
         env->int_pgm_ilc = ilc;
         env->exception_index = EXCP_PGM;
-        cpu_loop_exit();
+        cpu_loop_exit(env);
     }
 }
 
@@ -2823,12 +2828,12 @@ static uint32_t mvc_asc(int64_t l, uint64_t a1, uint64_t mode1, uint64_t a2,
     }
 
     if (mmu_translate(env, a1 & TARGET_PAGE_MASK, 1, mode1, &dest, &flags)) {
-        cpu_loop_exit();
+        cpu_loop_exit(env);
     }
     dest |= a1 & ~TARGET_PAGE_MASK;
 
     if (mmu_translate(env, a2 & TARGET_PAGE_MASK, 0, mode2, &src, &flags)) {
-        cpu_loop_exit();
+        cpu_loop_exit(env);
     }
     src |= a2 & ~TARGET_PAGE_MASK;