diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2010-02-28 16:02:28 +0100 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2010-02-28 16:36:44 +0100 |
commit | db9a231d1fcae75d6c62c2ff2ba76f4752aac5c4 (patch) | |
tree | 0fa4fa449633170a437c00accea94061f19f682b /target-ppc | |
parent | d9812b033a17c82f9e933757c1c3ef364e3ba62d (diff) | |
download | qemu-db9a231d1fcae75d6c62c2ff2ba76f4752aac5c4.zip |
Revert "target-ppc: stop translation after a trap instruction"
This reverts commit 6454e7be1b2504533f7ffb190d54ebe2993cb434.
Diffstat (limited to 'target-ppc')
-rw-r--r-- | target-ppc/translate.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/target-ppc/translate.c b/target-ppc/translate.c index 9da42404eb..0b11fda880 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -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); |