On Mon, 19 Aug 2019 at 22:38, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > 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 <peter.mayd...@linaro.org> thanks -- PMM