[PATCH 23/26] target/sparc: Use translator_use_goto_tb

Richard Henderson posted 26 patches 4 years, 7 months ago
There is a newer version of this series
[PATCH 23/26] target/sparc: Use translator_use_goto_tb
Posted by Richard Henderson 4 years, 7 months ago
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/sparc/translate.c | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/target/sparc/translate.c b/target/sparc/translate.c
index 4bfa3179f8..fb0c242606 100644
--- a/target/sparc/translate.c
+++ b/target/sparc/translate.c
@@ -339,23 +339,14 @@ static inline TCGv gen_dest_gpr(DisasContext *dc, int reg)
     }
 }
 
-static inline bool use_goto_tb(DisasContext *s, target_ulong pc,
-                               target_ulong npc)
+static bool use_goto_tb(DisasContext *s, target_ulong pc, target_ulong npc)
 {
-    if (unlikely(s->base.singlestep_enabled || singlestep)) {
-        return false;
-    }
-
-#ifndef CONFIG_USER_ONLY
-    return (pc & TARGET_PAGE_MASK) == (s->base.tb->pc & TARGET_PAGE_MASK) &&
-           (npc & TARGET_PAGE_MASK) == (s->base.tb->pc & TARGET_PAGE_MASK);
-#else
-    return true;
-#endif
+    return translator_use_goto_tb(&s->base, pc) &&
+           translator_use_goto_tb(&s->base, npc);
 }
 
-static inline void gen_goto_tb(DisasContext *s, int tb_num,
-                               target_ulong pc, target_ulong npc)
+static void gen_goto_tb(DisasContext *s, int tb_num,
+                        target_ulong pc, target_ulong npc)
 {
     if (use_goto_tb(s, pc, npc))  {
         /* jump to same page: we can use a direct jump */
-- 
2.25.1


Re: [PATCH 23/26] target/sparc: Use translator_use_goto_tb
Posted by Mark Cave-Ayland 4 years, 7 months ago
On 21/06/2021 02:34, Richard Henderson wrote:

> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   target/sparc/translate.c | 19 +++++--------------
>   1 file changed, 5 insertions(+), 14 deletions(-)
> 
> diff --git a/target/sparc/translate.c b/target/sparc/translate.c
> index 4bfa3179f8..fb0c242606 100644
> --- a/target/sparc/translate.c
> +++ b/target/sparc/translate.c
> @@ -339,23 +339,14 @@ static inline TCGv gen_dest_gpr(DisasContext *dc, int reg)
>       }
>   }
>   
> -static inline bool use_goto_tb(DisasContext *s, target_ulong pc,
> -                               target_ulong npc)
> +static bool use_goto_tb(DisasContext *s, target_ulong pc, target_ulong npc)
>   {
> -    if (unlikely(s->base.singlestep_enabled || singlestep)) {
> -        return false;
> -    }
> -
> -#ifndef CONFIG_USER_ONLY
> -    return (pc & TARGET_PAGE_MASK) == (s->base.tb->pc & TARGET_PAGE_MASK) &&
> -           (npc & TARGET_PAGE_MASK) == (s->base.tb->pc & TARGET_PAGE_MASK);
> -#else
> -    return true;
> -#endif
> +    return translator_use_goto_tb(&s->base, pc) &&
> +           translator_use_goto_tb(&s->base, npc);
>   }
>   
> -static inline void gen_goto_tb(DisasContext *s, int tb_num,
> -                               target_ulong pc, target_ulong npc)
> +static void gen_goto_tb(DisasContext *s, int tb_num,
> +                        target_ulong pc, target_ulong npc)
>   {
>       if (use_goto_tb(s, pc, npc))  {
>           /* jump to same page: we can use a direct jump */

Is it still worth keeping the unlikely() hint around the single-step check? I see it 
isn't included in your translator_use_goto_tb() implementation in patch 1.

I'll trust that you know better than me the effect of removing the inline, so:

Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


ATB,

Mark.