qemu-arm
[Top][All Lists]
Advanced

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

Re: [Qemu-arm] [PATCH v2 21/68] target/arm: Convert Synchronization prim


From: Peter Maydell
Subject: Re: [Qemu-arm] [PATCH v2 21/68] target/arm: Convert Synchronization primitives
Date: Fri, 23 Aug 2019 16:28:01 +0100

On Mon, 19 Aug 2019 at 22:38, Richard Henderson
<address@hidden> wrote:
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
>  target/arm/translate.c | 560 ++++++++++++++++++++++-------------------
>  target/arm/a32.decode  |  48 ++++
>  target/arm/t32.decode  |  46 ++++
>  3 files changed, 396 insertions(+), 258 deletions(-)

> +static bool op_stl(DisasContext *s, arg_STL *a, TCGMemOp mop)
> +{
> +    TCGv_i32 addr, tmp;
> +
> +    if (!ENABLE_ARCH_8) {
> +        return false;
> +    }
> +    addr = load_reg(s, a->rn);
> +
> +    tmp = load_reg(s, a->rt);
> +    tcg_gen_mb(TCG_MO_ALL | TCG_BAR_STRL);
> +    gen_aa32_st_i32(s, tmp, addr, get_mem_index(s), mop | s->be_data);
> +    disas_set_da_iss(s, mop, a->rt | ISSIsAcqRel | ISSIsWrite);
> +
> +    tcg_temp_free_i32(tmp);
> +    tcg_temp_free_i32(addr);
> +    return true;
> +}
> +


> -                                rm = insn & 0xf;
> -                                tmp = load_reg(s, rm);
> -                                switch (op1) {
> -                                case 0: /* stl */
> -                                    gen_aa32_st32_iss(s, tmp, addr,
> -                                                      get_mem_index(s),
> -                                                      rm | ISSIsAcqRel);
> -                                    break;
> -                                case 2: /* stlb */
> -                                    gen_aa32_st8_iss(s, tmp, addr,
> -                                                     get_mem_index(s),
> -                                                     rm | ISSIsAcqRel);
> -                                    break;
> -                                case 3: /* stlh */
> -                                    gen_aa32_st16_iss(s, tmp, addr,
> -                                                      get_mem_index(s),
> -                                                      rm | ISSIsAcqRel);
> -                                    break;

Any particular reason for doing separate gen_aa32_st_i32()
and disas_set_da_iss() calls rather than using the _gen_aa32_st32_iss()
function that the old decoder did?

either way
Reviewed-by: Peter Maydell <address@hidden>

thanks
-- PMM



reply via email to

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