]> Git Repo - qemu.git/blobdiff - target-sh4/op_helper.c
SH4: convert a few helpers to TCG
[qemu.git] / target-sh4 / op_helper.c
index c1bc4e8942d0071b162549c20d8104f7b459af7b..8504115400d0028399f7e32feb5b75522ace9a8a 100644 (file)
 #include <assert.h>
 #include "exec.h"
 
-void do_raise_exception(void)
-{
-    cpu_loop_exit();
-}
-
 #ifndef CONFIG_USER_ONLY
 
 #define MMUSUFFIX _mmu
-#ifdef __s390__
-# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
-#else
-# define GETPC() (__builtin_return_address(0))
-#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
@@ -69,13 +59,55 @@ void tlb_fill(target_ulong addr, int is_write, int mmu_idx, void *retaddr)
                cpu_restore_state(tb, env, pc, NULL);
            }
        }
-       do_raise_exception();
+       cpu_loop_exit();
     }
     env = saved_env;
 }
 
 #endif
 
+void helper_ldtlb(void)
+{
+#ifdef CONFIG_USER_ONLY
+    /* XXXXX */
+    assert(0);
+#else
+    cpu_load_tlb(env);
+#endif
+}
+
+void helper_raise_illegal_instruction(void)
+{
+    env->exception_index = 0x180;
+    cpu_loop_exit();
+}
+
+void helper_raise_slot_illegal_instruction(void)
+{
+    env->exception_index = 0x1a0;
+    cpu_loop_exit();
+}
+
+void helper_debug(void)
+{
+    env->exception_index = EXCP_DEBUG;
+    cpu_loop_exit();
+}
+
+void helper_sleep(void)
+{
+    env->halted = 1;
+    env->exception_index = EXCP_HLT;
+    cpu_loop_exit();
+}
+
+void helper_trapa(uint32_t tra)
+{
+    env->tra = tra << 2;
+    env->exception_index = 0x160;
+    cpu_loop_exit();
+}
+
 void helper_addc_T0_T1(void)
 {
     uint32_t tmp0, tmp1;
This page took 0.025787 seconds and 4 git commands to generate.