In preparation of using the MemOp content in the next commit (thus stopping ignoring it), pass it as MemOpIdx.
The helper prototype declaration always took a TCGv_i32 as last argument, correct that. Rename the ignored 'mem_idx' argument on user emulation. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Message-Id: <[email protected]> --- target/mips/helper.h | 4 ++-- target/mips/tcg/ldst_helper.c | 5 ++++- target/mips/tcg/translate.c | 7 ++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/target/mips/helper.h b/target/mips/helper.h index b6cd53c8538..e2b83a1d19d 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -10,9 +10,9 @@ DEF_HELPER_4(swl, void, env, tl, tl, int) DEF_HELPER_4(swr, void, env, tl, tl, int) #ifndef CONFIG_USER_ONLY -DEF_HELPER_3(ll, tl, env, tl, int) +DEF_HELPER_3(ll, tl, env, tl, i32) #ifdef TARGET_MIPS64 -DEF_HELPER_3(lld, tl, env, tl, int) +DEF_HELPER_3(lld, tl, env, tl, i32) #endif #endif diff --git a/target/mips/tcg/ldst_helper.c b/target/mips/tcg/ldst_helper.c index 537f3e87bc0..b36b12d87d6 100644 --- a/target/mips/tcg/ldst_helper.c +++ b/target/mips/tcg/ldst_helper.c @@ -30,8 +30,11 @@ #ifndef CONFIG_USER_ONLY #define HELPER_LD_ATOMIC(name, insn, almask, do_cast) \ -target_ulong helper_##name(CPUMIPSState *env, target_ulong arg, int mem_idx) \ +target_ulong helper_##name(CPUMIPSState *env, target_ulong arg, \ + uint32_t memop_idx) \ { \ + MemOpIdx oi = memop_idx; \ + unsigned mem_idx = get_mmuidx(oi); \ if (arg & almask) { \ if (!(env->hflags & MIPS_HFLAG_DM)) { \ env->CP0_BadVAddr = arg; \ diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index e334cf98b78..ee6199875cf 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -1922,7 +1922,7 @@ FOP_CONDNS(s, FMT_S, 32, gen_store_fpr32(ctx, fp0, fd)) /* load/store instructions. */ #ifdef CONFIG_USER_ONLY #define OP_LD_ATOMIC(insn, memop) \ -static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx, \ +static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx_ignored, \ DisasContext *ctx) \ { \ TCGv t0 = tcg_temp_new(); \ @@ -1932,11 +1932,12 @@ static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx, \ tcg_gen_st_tl(ret, tcg_env, offsetof(CPUMIPSState, llval)); \ } #else -#define OP_LD_ATOMIC(insn, ignored_memop) \ +#define OP_LD_ATOMIC(insn, memop) \ static inline void op_ld_##insn(TCGv ret, TCGv arg1, int mem_idx, \ DisasContext *ctx) \ { \ - gen_helper_##insn(ret, tcg_env, arg1, tcg_constant_i32(mem_idx)); \ + MemOpIdx oi = make_memop_idx(memop, mem_idx); \ + gen_helper_##insn(ret, tcg_env, arg1, tcg_constant_i32(oi)); \ } #endif OP_LD_ATOMIC(ll, mo_endian(ctx) | MO_SL); -- 2.53.0
