qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 04/16] tcg/aarch64: Fold away "noaddr" branch


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH v3 04/16] tcg/aarch64: Fold away "noaddr" branch routines
Date: Mon, 03 Dec 2018 15:49:46 +0000
User-agent: mu4e 1.1.0; emacs 26.1.90

Richard Henderson <address@hidden> writes:

> There are one use apiece for these.  There is no longer a need for
> preserving branch offset operands, as we no longer re-translate.
>
> Signed-off-by: Richard Henderson <address@hidden>

Reviewed-by: Alex Bennée <address@hidden>

> ---
>  tcg/aarch64/tcg-target.inc.c | 21 ++-------------------
>  1 file changed, 2 insertions(+), 19 deletions(-)
>
> diff --git a/tcg/aarch64/tcg-target.inc.c b/tcg/aarch64/tcg-target.inc.c
> index a41b633960..28de0226fb 100644
> --- a/tcg/aarch64/tcg-target.inc.c
> +++ b/tcg/aarch64/tcg-target.inc.c
> @@ -1129,23 +1129,6 @@ static inline void tcg_out_goto_long(TCGContext *s, 
> tcg_insn_unit *target)
>      }
>  }
>
> -static inline void tcg_out_goto_noaddr(TCGContext *s)
> -{
> -    /* We pay attention here to not modify the branch target by reading from
> -       the buffer. This ensure that caches and memory are kept coherent 
> during
> -       retranslation.  Mask away possible garbage in the high bits for the
> -       first translation, while keeping the offset bits for retranslation. */
> -    uint32_t old = tcg_in32(s);
> -    tcg_out_insn(s, 3206, B, old);
> -}
> -
> -static inline void tcg_out_goto_cond_noaddr(TCGContext *s, TCGCond c)
> -{
> -    /* See comments in tcg_out_goto_noaddr.  */
> -    uint32_t old = tcg_in32(s) >> 5;
> -    tcg_out_insn(s, 3202, B_C, c, old);
> -}
> -
>  static inline void tcg_out_callr(TCGContext *s, TCGReg reg)
>  {
>      tcg_out_insn(s, 3207, BLR, reg);
> @@ -1192,7 +1175,7 @@ static inline void tcg_out_goto_label(TCGContext *s, 
> TCGLabel *l)
>  {
>      if (!l->has_value) {
>          tcg_out_reloc(s, s->code_ptr, R_AARCH64_JUMP26, l, 0);
> -        tcg_out_goto_noaddr(s);
> +        tcg_out_insn(s, 3206, B, 0);
>      } else {
>          tcg_out_goto(s, l->u.value_ptr);
>      }
> @@ -1523,7 +1506,7 @@ static void tcg_out_tlb_read(TCGContext *s, TCGReg 
> addr_reg, TCGMemOp opc,
>
>      /* If not equal, we jump to the slow path. */
>      *label_ptr = s->code_ptr;
> -    tcg_out_goto_cond_noaddr(s, TCG_COND_NE);
> +    tcg_out_insn(s, 3202, B_C, TCG_COND_NE, 0);
>  }
>
>  #endif /* CONFIG_SOFTMMU */


--
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]