Revert "target-ppc: stop translation after a trap instruction"
authorAurelien Jarno <aurelien@aurel32.net>
Sun, 28 Feb 2010 15:02:28 +0000 (16:02 +0100)
committerAurelien Jarno <aurelien@aurel32.net>
Sun, 28 Feb 2010 15:36:44 +0000 (16:36 +0100)
This reverts commit 6454e7be1b2504533f7ffb190d54ebe2993cb434.

target-ppc/translate.c

index 9da4240..0b11fda 100644 (file)
@@ -3618,9 +3618,8 @@ static void gen_sc(DisasContext *ctx)
 static void gen_tw(DisasContext *ctx)
 {
     TCGv_i32 t0 = tcg_const_i32(TO(ctx->opcode));
-    /* Stop the translation since this might generate a trap exception
-       and/or following instructions might be invalid */
-    gen_stop_exception(ctx);
+    /* Update the nip since this might generate a trap exception */
+    gen_update_nip(ctx, ctx->nip);
     gen_helper_tw(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)], t0);
     tcg_temp_free_i32(t0);
 }
@@ -3630,9 +3629,8 @@ static void gen_twi(DisasContext *ctx)
 {
     TCGv t0 = tcg_const_tl(SIMM(ctx->opcode));
     TCGv_i32 t1 = tcg_const_i32(TO(ctx->opcode));
-    /* Stop the translation since this might generate a trap exception
-       and/or following instructions might be invalid */
-    gen_stop_exception(ctx);
+    /* Update the nip since this might generate a trap exception */
+    gen_update_nip(ctx, ctx->nip);
     gen_helper_tw(cpu_gpr[rA(ctx->opcode)], t0, t1);
     tcg_temp_free(t0);
     tcg_temp_free_i32(t1);
@@ -3643,9 +3641,8 @@ static void gen_twi(DisasContext *ctx)
 static void gen_td(DisasContext *ctx)
 {
     TCGv_i32 t0 = tcg_const_i32(TO(ctx->opcode));
-    /* Stop the translation since this might generate a trap exception
-       and/or following instructions might be invalid */
-    gen_stop_exception(ctx);
+    /* Update the nip since this might generate a trap exception */
+    gen_update_nip(ctx, ctx->nip);
     gen_helper_td(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rB(ctx->opcode)], t0);
     tcg_temp_free_i32(t0);
 }
@@ -3655,9 +3652,8 @@ static void gen_tdi(DisasContext *ctx)
 {
     TCGv t0 = tcg_const_tl(SIMM(ctx->opcode));
     TCGv_i32 t1 = tcg_const_i32(TO(ctx->opcode));
-    /* Stop the translation since this might generate a trap exception
-       and/or following instructions might be invalid */
-    gen_stop_exception(ctx);
+    /* Update the nip since this might generate a trap exception */
+    gen_update_nip(ctx, ctx->nip);
     gen_helper_td(cpu_gpr[rA(ctx->opcode)], t0, t1);
     tcg_temp_free(t0);
     tcg_temp_free_i32(t1);