qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 2/2][SPARC] Fix TA0_Shutdown feature


From: Julien Grall
Subject: [Qemu-devel] [PATCH 2/2][SPARC] Fix TA0_Shutdown feature
Date: Tue, 17 May 2011 17:32:33 +0200

Fix TA0_SHUTDOWN feature

Signed-off-by: Julien Grall <address@hidden>
---
 target-sparc/op_helper.c |   13 +++++++++++--
 target-sparc/translate.c |    9 +--------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c
index a6fabad..cb775f5 100644
--- a/target-sparc/op_helper.c
+++ b/target-sparc/op_helper.c
@@ -326,8 +326,17 @@ void HELPER(raise_exception)(int tt)

 void HELPER(trap_always)(int tt)
 {
-    env->exception_index = tt;
-    do_interrupt(env);
+    if (tt == TT_TRAP
+        && env->def->features & CPU_FEATURE_TA0_SHUTDOWN
+#ifndef TARGET_SPARC64
+        && env->psret == 0
+#endif
+        ) {
+        helper_shutdown();
+    } else {
+        env->exception_index = tt;
+        do_interrupt(env);
+    }
 }

 void helper_shutdown(void)
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index b30003b..a47a2de 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -2009,14 +2009,7 @@ static void disas_sparc_insn(DisasContext * dc)
                     tcg_gen_addi_tl(cpu_dst, cpu_dst, TT_TRAP);
                     tcg_gen_trunc_tl_i32(cpu_tmp32, cpu_dst);

-                    if (rs2 == 0 &&
-                        dc->def->features & CPU_FEATURE_TA0_SHUTDOWN) {
-
-                        gen_helper_shutdown();
-
-                    } else {
-                        gen_helper_trap_always(cpu_tmp32);
-                    }
+                    gen_helper_trap_always(cpu_tmp32);
                 } else if (cond != 0) {
                     TCGv r_cond = tcg_temp_new();
                     int l1;
-- 
1.7.4.4



reply via email to

[Prev in Thread] Current Thread [Next in Thread]