target-sparc: Fall through from not-taken trap

Now that we've cleaned up global temporary allocation, we can
continue translating the fallthru path of a conditional trap.

Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Richard Henderson 2012-10-05 16:55:09 -07:00 committed by Blue Swirl
parent b09b2fd30c
commit fe1755cbb2

View File

@ -2573,13 +2573,15 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
gen_helper_raise_exception(cpu_env, trap);
tcg_temp_free_i32(trap);
if (cond != 8) {
gen_set_label(l1);
gen_op_next_insn();
tcg_gen_exit_tb(0);
}
if (cond == 8) {
/* An unconditional trap ends the TB. */
dc->is_br = 1;
goto jmp_insn;
} else {
/* A conditional trap falls through to the next insn. */
gen_set_label(l1);
break;
}
} else if (xop == 0x28) {
rs1 = GET_FIELD(insn, 13, 17);
switch(rs1) {