target-sparc: Introduce cpu_raise_exception_ra
commit2f9d35fc4006122bad33f9ae3e2e51d2263e98ee
authorRichard Henderson <rth@twiddle.net>
Tue, 12 Jul 2016 20:12:50 +0000 (12 13:12 -0700)
committerRichard Henderson <rth@twiddle.net>
Mon, 31 Oct 2016 15:46:25 +0000 (31 09:46 -0600)
treef6499fba9d4ce0cc5c0860fff9ea939784257ded
parent808832277af11dafee5a55da2b9e41d019b879ca
target-sparc: Introduce cpu_raise_exception_ra

Several helpers call helper_raise_exception directly, which requires
in turn that their callers have performed save_state.  The new function
allows a TCG return address to be passed in so that we can restore
PC + NPC + flags data from that.

This fixes a bug in the usage of helper_check_align, whose callers had
not been calling save_state.  It fixes another bug in which the divide
helpers used GETPC at a level other than the direct callee from TCG.

This allows the translator to avoid save_state prior to SAVE, RESTORE,
and FLUSHW instructions.

Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <rth@twiddle.net>
target-sparc/cpu.h
target-sparc/helper.c
target-sparc/ldst_helper.c
target-sparc/translate.c
target-sparc/win_helper.c