On 5/22/24 15:45, Ilya Leoshkevich wrote:
On Wed, 2024-05-01 at 22:44 -0700, Richard Henderson wrote:
Drop from argument, since gbea has always been updated with
this address.  Add ilen argument for setting int_pgm_ilen.
Use update_cc_op before calling per_branch.

By raising the exception here, we need not call
per_check_exception later, which means we can clean up the
normal non-exception branch path.

Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
  target/s390x/helper.h          |  2 +-
  target/s390x/tcg/misc_helper.c | 15 +++++++----
  target/s390x/tcg/translate.c   | 48 ++++++++++++--------------------
--
  3 files changed, 27 insertions(+), 38 deletions(-)

[...]

  static bool use_goto_tb(DisasContext *s, uint64_t dest)
  {
-    if (unlikely(s->base.tb->flags & FLAG_MASK_PER_BRANCH)) {
-        return false;
-    }

Why was this required in the first place and why can we remove it now?


This was required because of the structure of the code: the PER exception was only raised from translate_one, and therefore we could not allow the TB to end beforehand with goto_tb.

We can eliminate this now because we're raising the PER branch exception before attempting goto_tb.


r~

Reply via email to