From: Ilya Leoshkevich <i...@linux.ibm.com> The branching code sets per_perc_atmid, but afterwards it does goto_tb/exit_tb, so per_check_exception() added by translate_one() is not reached.
Fix by raising PER exception in per_branch(). Signed-off-by: Ilya Leoshkevich <i...@linux.ibm.com> Message-Id: <20221130174610.434590-1-...@linux.ibm.com> Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- target/s390x/tcg/misc_helper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/s390x/tcg/misc_helper.c b/target/s390x/tcg/misc_helper.c index 71388a7119..b7220cef44 100644 --- a/target/s390x/tcg/misc_helper.c +++ b/target/s390x/tcg/misc_helper.c @@ -619,6 +619,7 @@ void HELPER(per_branch)(CPUS390XState *env, uint64_t from, uint64_t to) || get_per_in_range(env, to)) { env->per_address = from; env->per_perc_atmid = PER_CODE_EVENT_BRANCH | get_per_atmid(env); + tcg_s390_program_interrupt(env, PGM_PER, GETPC()); } } } -- 2.34.1