xref: /qemu/accel/tcg/ldst_common.c.inc (revision 3b916140)
1f83bcecbSRichard Henderson/*
2f83bcecbSRichard Henderson * Routines common to user and system emulation of load/store.
3f83bcecbSRichard Henderson *
4f83bcecbSRichard Henderson *  Copyright (c) 2003 Fabrice Bellard
5f83bcecbSRichard Henderson *
6f83bcecbSRichard Henderson * SPDX-License-Identifier: GPL-2.0-or-later
7f83bcecbSRichard Henderson *
8f83bcecbSRichard Henderson * This work is licensed under the terms of the GNU GPL, version 2 or later.
9f83bcecbSRichard Henderson * See the COPYING file in the top-level directory.
10f83bcecbSRichard Henderson */
1127c46fadSAnton Johansson/*
1227c46fadSAnton Johansson * Load helpers for tcg-ldst.h
1327c46fadSAnton Johansson */
1427c46fadSAnton Johansson
1527c46fadSAnton Johanssontcg_target_ulong helper_ldub_mmu(CPUArchState *env, uint64_t addr,
1627c46fadSAnton Johansson                                 MemOpIdx oi, uintptr_t retaddr)
1727c46fadSAnton Johansson{
1827c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
1927c46fadSAnton Johansson    return do_ld1_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
2027c46fadSAnton Johansson}
2127c46fadSAnton Johansson
2227c46fadSAnton Johanssontcg_target_ulong helper_lduw_mmu(CPUArchState *env, uint64_t addr,
2327c46fadSAnton Johansson                                 MemOpIdx oi, uintptr_t retaddr)
2427c46fadSAnton Johansson{
2527c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
2627c46fadSAnton Johansson    return do_ld2_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
2727c46fadSAnton Johansson}
2827c46fadSAnton Johansson
2927c46fadSAnton Johanssontcg_target_ulong helper_ldul_mmu(CPUArchState *env, uint64_t addr,
3027c46fadSAnton Johansson                                 MemOpIdx oi, uintptr_t retaddr)
3127c46fadSAnton Johansson{
3227c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
3327c46fadSAnton Johansson    return do_ld4_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
3427c46fadSAnton Johansson}
3527c46fadSAnton Johansson
3627c46fadSAnton Johanssonuint64_t helper_ldq_mmu(CPUArchState *env, uint64_t addr,
3727c46fadSAnton Johansson                        MemOpIdx oi, uintptr_t retaddr)
3827c46fadSAnton Johansson{
3927c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
4027c46fadSAnton Johansson    return do_ld8_mmu(env_cpu(env), addr, oi, retaddr, MMU_DATA_LOAD);
4127c46fadSAnton Johansson}
4227c46fadSAnton Johansson
4327c46fadSAnton Johansson/*
4427c46fadSAnton Johansson * Provide signed versions of the load routines as well.  We can of course
4527c46fadSAnton Johansson * avoid this for 64-bit data, or for 32-bit data on 32-bit host.
4627c46fadSAnton Johansson */
4727c46fadSAnton Johansson
4827c46fadSAnton Johanssontcg_target_ulong helper_ldsb_mmu(CPUArchState *env, uint64_t addr,
4927c46fadSAnton Johansson                                 MemOpIdx oi, uintptr_t retaddr)
5027c46fadSAnton Johansson{
5127c46fadSAnton Johansson    return (int8_t)helper_ldub_mmu(env, addr, oi, retaddr);
5227c46fadSAnton Johansson}
5327c46fadSAnton Johansson
5427c46fadSAnton Johanssontcg_target_ulong helper_ldsw_mmu(CPUArchState *env, uint64_t addr,
5527c46fadSAnton Johansson                                 MemOpIdx oi, uintptr_t retaddr)
5627c46fadSAnton Johansson{
5727c46fadSAnton Johansson    return (int16_t)helper_lduw_mmu(env, addr, oi, retaddr);
5827c46fadSAnton Johansson}
5927c46fadSAnton Johansson
6027c46fadSAnton Johanssontcg_target_ulong helper_ldsl_mmu(CPUArchState *env, uint64_t addr,
6127c46fadSAnton Johansson                                 MemOpIdx oi, uintptr_t retaddr)
6227c46fadSAnton Johansson{
6327c46fadSAnton Johansson    return (int32_t)helper_ldul_mmu(env, addr, oi, retaddr);
6427c46fadSAnton Johansson}
6527c46fadSAnton Johansson
6627c46fadSAnton JohanssonInt128 helper_ld16_mmu(CPUArchState *env, uint64_t addr,
6727c46fadSAnton Johansson                       MemOpIdx oi, uintptr_t retaddr)
6827c46fadSAnton Johansson{
6927c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
7027c46fadSAnton Johansson    return do_ld16_mmu(env_cpu(env), addr, oi, retaddr);
7127c46fadSAnton Johansson}
7227c46fadSAnton Johansson
7327c46fadSAnton JohanssonInt128 helper_ld_i128(CPUArchState *env, uint64_t addr, uint32_t oi)
7427c46fadSAnton Johansson{
7527c46fadSAnton Johansson    return helper_ld16_mmu(env, addr, oi, GETPC());
7627c46fadSAnton Johansson}
7727c46fadSAnton Johansson
7827c46fadSAnton Johansson/*
7927c46fadSAnton Johansson * Store helpers for tcg-ldst.h
8027c46fadSAnton Johansson */
8127c46fadSAnton Johansson
8227c46fadSAnton Johanssonvoid helper_stb_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
8327c46fadSAnton Johansson                    MemOpIdx oi, uintptr_t ra)
8427c46fadSAnton Johansson{
8527c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_8);
8627c46fadSAnton Johansson    do_st1_mmu(env_cpu(env), addr, val, oi, ra);
8727c46fadSAnton Johansson}
8827c46fadSAnton Johansson
8927c46fadSAnton Johanssonvoid helper_stw_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
9027c46fadSAnton Johansson                    MemOpIdx oi, uintptr_t retaddr)
9127c46fadSAnton Johansson{
9227c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
9327c46fadSAnton Johansson    do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
9427c46fadSAnton Johansson}
9527c46fadSAnton Johansson
9627c46fadSAnton Johanssonvoid helper_stl_mmu(CPUArchState *env, uint64_t addr, uint32_t val,
9727c46fadSAnton Johansson                    MemOpIdx oi, uintptr_t retaddr)
9827c46fadSAnton Johansson{
9927c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
10027c46fadSAnton Johansson    do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
10127c46fadSAnton Johansson}
10227c46fadSAnton Johansson
10327c46fadSAnton Johanssonvoid helper_stq_mmu(CPUArchState *env, uint64_t addr, uint64_t val,
10427c46fadSAnton Johansson                    MemOpIdx oi, uintptr_t retaddr)
10527c46fadSAnton Johansson{
10627c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
10727c46fadSAnton Johansson    do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
10827c46fadSAnton Johansson}
10927c46fadSAnton Johansson
11027c46fadSAnton Johanssonvoid helper_st16_mmu(CPUArchState *env, uint64_t addr, Int128 val,
11127c46fadSAnton Johansson                     MemOpIdx oi, uintptr_t retaddr)
11227c46fadSAnton Johansson{
11327c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
11427c46fadSAnton Johansson    do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
11527c46fadSAnton Johansson}
11627c46fadSAnton Johansson
11727c46fadSAnton Johanssonvoid helper_st_i128(CPUArchState *env, uint64_t addr, Int128 val, MemOpIdx oi)
11827c46fadSAnton Johansson{
11927c46fadSAnton Johansson    helper_st16_mmu(env, addr, val, oi, GETPC());
12027c46fadSAnton Johansson}
12127c46fadSAnton Johansson
12227c46fadSAnton Johansson/*
12327c46fadSAnton Johansson * Load helpers for cpu_ldst.h
12427c46fadSAnton Johansson */
12527c46fadSAnton Johansson
12627c46fadSAnton Johanssonstatic void plugin_load_cb(CPUArchState *env, abi_ptr addr, MemOpIdx oi)
12727c46fadSAnton Johansson{
12827c46fadSAnton Johansson    qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_R);
12927c46fadSAnton Johansson}
13027c46fadSAnton Johansson
13127c46fadSAnton Johanssonuint8_t cpu_ldb_mmu(CPUArchState *env, abi_ptr addr, MemOpIdx oi, uintptr_t ra)
13227c46fadSAnton Johansson{
13327c46fadSAnton Johansson    uint8_t ret;
13427c46fadSAnton Johansson
13527c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_UB);
13627c46fadSAnton Johansson    ret = do_ld1_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
13727c46fadSAnton Johansson    plugin_load_cb(env, addr, oi);
13827c46fadSAnton Johansson    return ret;
13927c46fadSAnton Johansson}
14027c46fadSAnton Johansson
14127c46fadSAnton Johanssonuint16_t cpu_ldw_mmu(CPUArchState *env, abi_ptr addr,
14227c46fadSAnton Johansson                     MemOpIdx oi, uintptr_t ra)
14327c46fadSAnton Johansson{
14427c46fadSAnton Johansson    uint16_t ret;
14527c46fadSAnton Johansson
14627c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
14727c46fadSAnton Johansson    ret = do_ld2_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
14827c46fadSAnton Johansson    plugin_load_cb(env, addr, oi);
14927c46fadSAnton Johansson    return ret;
15027c46fadSAnton Johansson}
15127c46fadSAnton Johansson
15227c46fadSAnton Johanssonuint32_t cpu_ldl_mmu(CPUArchState *env, abi_ptr addr,
15327c46fadSAnton Johansson                     MemOpIdx oi, uintptr_t ra)
15427c46fadSAnton Johansson{
15527c46fadSAnton Johansson    uint32_t ret;
15627c46fadSAnton Johansson
15727c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
15827c46fadSAnton Johansson    ret = do_ld4_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
15927c46fadSAnton Johansson    plugin_load_cb(env, addr, oi);
16027c46fadSAnton Johansson    return ret;
16127c46fadSAnton Johansson}
16227c46fadSAnton Johansson
16327c46fadSAnton Johanssonuint64_t cpu_ldq_mmu(CPUArchState *env, abi_ptr addr,
16427c46fadSAnton Johansson                     MemOpIdx oi, uintptr_t ra)
16527c46fadSAnton Johansson{
16627c46fadSAnton Johansson    uint64_t ret;
16727c46fadSAnton Johansson
16827c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
16927c46fadSAnton Johansson    ret = do_ld8_mmu(env_cpu(env), addr, oi, ra, MMU_DATA_LOAD);
17027c46fadSAnton Johansson    plugin_load_cb(env, addr, oi);
17127c46fadSAnton Johansson    return ret;
17227c46fadSAnton Johansson}
17327c46fadSAnton Johansson
17427c46fadSAnton JohanssonInt128 cpu_ld16_mmu(CPUArchState *env, abi_ptr addr,
17527c46fadSAnton Johansson                    MemOpIdx oi, uintptr_t ra)
17627c46fadSAnton Johansson{
17727c46fadSAnton Johansson    Int128 ret;
17827c46fadSAnton Johansson
17927c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
18027c46fadSAnton Johansson    ret = do_ld16_mmu(env_cpu(env), addr, oi, ra);
18127c46fadSAnton Johansson    plugin_load_cb(env, addr, oi);
18227c46fadSAnton Johansson    return ret;
18327c46fadSAnton Johansson}
18427c46fadSAnton Johansson
18527c46fadSAnton Johansson/*
18627c46fadSAnton Johansson * Store helpers for cpu_ldst.h
18727c46fadSAnton Johansson */
18827c46fadSAnton Johansson
18927c46fadSAnton Johanssonstatic void plugin_store_cb(CPUArchState *env, abi_ptr addr, MemOpIdx oi)
19027c46fadSAnton Johansson{
19127c46fadSAnton Johansson    qemu_plugin_vcpu_mem_cb(env_cpu(env), addr, oi, QEMU_PLUGIN_MEM_W);
19227c46fadSAnton Johansson}
19327c46fadSAnton Johansson
19427c46fadSAnton Johanssonvoid cpu_stb_mmu(CPUArchState *env, abi_ptr addr, uint8_t val,
19527c46fadSAnton Johansson                 MemOpIdx oi, uintptr_t retaddr)
19627c46fadSAnton Johansson{
19727c46fadSAnton Johansson    helper_stb_mmu(env, addr, val, oi, retaddr);
19827c46fadSAnton Johansson    plugin_store_cb(env, addr, oi);
19927c46fadSAnton Johansson}
20027c46fadSAnton Johansson
20127c46fadSAnton Johanssonvoid cpu_stw_mmu(CPUArchState *env, abi_ptr addr, uint16_t val,
20227c46fadSAnton Johansson                 MemOpIdx oi, uintptr_t retaddr)
20327c46fadSAnton Johansson{
20427c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_16);
20527c46fadSAnton Johansson    do_st2_mmu(env_cpu(env), addr, val, oi, retaddr);
20627c46fadSAnton Johansson    plugin_store_cb(env, addr, oi);
20727c46fadSAnton Johansson}
20827c46fadSAnton Johansson
20927c46fadSAnton Johanssonvoid cpu_stl_mmu(CPUArchState *env, abi_ptr addr, uint32_t val,
21027c46fadSAnton Johansson                    MemOpIdx oi, uintptr_t retaddr)
21127c46fadSAnton Johansson{
21227c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_32);
21327c46fadSAnton Johansson    do_st4_mmu(env_cpu(env), addr, val, oi, retaddr);
21427c46fadSAnton Johansson    plugin_store_cb(env, addr, oi);
21527c46fadSAnton Johansson}
21627c46fadSAnton Johansson
21727c46fadSAnton Johanssonvoid cpu_stq_mmu(CPUArchState *env, abi_ptr addr, uint64_t val,
21827c46fadSAnton Johansson                 MemOpIdx oi, uintptr_t retaddr)
21927c46fadSAnton Johansson{
22027c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_64);
22127c46fadSAnton Johansson    do_st8_mmu(env_cpu(env), addr, val, oi, retaddr);
22227c46fadSAnton Johansson    plugin_store_cb(env, addr, oi);
22327c46fadSAnton Johansson}
22427c46fadSAnton Johansson
22527c46fadSAnton Johanssonvoid cpu_st16_mmu(CPUArchState *env, abi_ptr addr, Int128 val,
22627c46fadSAnton Johansson                  MemOpIdx oi, uintptr_t retaddr)
22727c46fadSAnton Johansson{
22827c46fadSAnton Johansson    tcg_debug_assert((get_memop(oi) & MO_SIZE) == MO_128);
22927c46fadSAnton Johansson    do_st16_mmu(env_cpu(env), addr, val, oi, retaddr);
23027c46fadSAnton Johansson    plugin_store_cb(env, addr, oi);
23127c46fadSAnton Johansson}
23227c46fadSAnton Johansson
23327c46fadSAnton Johansson/*
23427c46fadSAnton Johansson * Wrappers of the above
23527c46fadSAnton Johansson */
236f83bcecbSRichard Henderson
237f83bcecbSRichard Hendersonuint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
238f83bcecbSRichard Henderson                            int mmu_idx, uintptr_t ra)
239f83bcecbSRichard Henderson{
240f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
241f83bcecbSRichard Henderson    return cpu_ldb_mmu(env, addr, oi, ra);
242f83bcecbSRichard Henderson}
243f83bcecbSRichard Henderson
244f83bcecbSRichard Hendersonint cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
245f83bcecbSRichard Henderson                       int mmu_idx, uintptr_t ra)
246f83bcecbSRichard Henderson{
247f83bcecbSRichard Henderson    return (int8_t)cpu_ldub_mmuidx_ra(env, addr, mmu_idx, ra);
248f83bcecbSRichard Henderson}
249f83bcecbSRichard Henderson
250f83bcecbSRichard Hendersonuint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
251f83bcecbSRichard Henderson                               int mmu_idx, uintptr_t ra)
252f83bcecbSRichard Henderson{
253f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
254fbea7a40SRichard Henderson    return cpu_ldw_mmu(env, addr, oi, ra);
255f83bcecbSRichard Henderson}
256f83bcecbSRichard Henderson
257f83bcecbSRichard Hendersonint cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
258f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
259f83bcecbSRichard Henderson{
260f83bcecbSRichard Henderson    return (int16_t)cpu_lduw_be_mmuidx_ra(env, addr, mmu_idx, ra);
261f83bcecbSRichard Henderson}
262f83bcecbSRichard Henderson
263f83bcecbSRichard Hendersonuint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
264f83bcecbSRichard Henderson                              int mmu_idx, uintptr_t ra)
265f83bcecbSRichard Henderson{
266f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
267fbea7a40SRichard Henderson    return cpu_ldl_mmu(env, addr, oi, ra);
268f83bcecbSRichard Henderson}
269f83bcecbSRichard Henderson
270f83bcecbSRichard Hendersonuint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
271f83bcecbSRichard Henderson                              int mmu_idx, uintptr_t ra)
272f83bcecbSRichard Henderson{
273fc313c64SFrédéric Pétrot    MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
274fbea7a40SRichard Henderson    return cpu_ldq_mmu(env, addr, oi, ra);
275f83bcecbSRichard Henderson}
276f83bcecbSRichard Henderson
277f83bcecbSRichard Hendersonuint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
278f83bcecbSRichard Henderson                               int mmu_idx, uintptr_t ra)
279f83bcecbSRichard Henderson{
280f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
281fbea7a40SRichard Henderson    return cpu_ldw_mmu(env, addr, oi, ra);
282f83bcecbSRichard Henderson}
283f83bcecbSRichard Henderson
284f83bcecbSRichard Hendersonint cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
285f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
286f83bcecbSRichard Henderson{
287f83bcecbSRichard Henderson    return (int16_t)cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, ra);
288f83bcecbSRichard Henderson}
289f83bcecbSRichard Henderson
290f83bcecbSRichard Hendersonuint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
291f83bcecbSRichard Henderson                              int mmu_idx, uintptr_t ra)
292f83bcecbSRichard Henderson{
293f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
294fbea7a40SRichard Henderson    return cpu_ldl_mmu(env, addr, oi, ra);
295f83bcecbSRichard Henderson}
296f83bcecbSRichard Henderson
297f83bcecbSRichard Hendersonuint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
298f83bcecbSRichard Henderson                              int mmu_idx, uintptr_t ra)
299f83bcecbSRichard Henderson{
300fc313c64SFrédéric Pétrot    MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
301fbea7a40SRichard Henderson    return cpu_ldq_mmu(env, addr, oi, ra);
302f83bcecbSRichard Henderson}
303f83bcecbSRichard Henderson
304f83bcecbSRichard Hendersonvoid cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
305f83bcecbSRichard Henderson                       int mmu_idx, uintptr_t ra)
306f83bcecbSRichard Henderson{
307f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
308f83bcecbSRichard Henderson    cpu_stb_mmu(env, addr, val, oi, ra);
309f83bcecbSRichard Henderson}
310f83bcecbSRichard Henderson
311f83bcecbSRichard Hendersonvoid cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
312f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
313f83bcecbSRichard Henderson{
314f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
315fbea7a40SRichard Henderson    cpu_stw_mmu(env, addr, val, oi, ra);
316f83bcecbSRichard Henderson}
317f83bcecbSRichard Henderson
318f83bcecbSRichard Hendersonvoid cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
319f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
320f83bcecbSRichard Henderson{
321f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
322fbea7a40SRichard Henderson    cpu_stl_mmu(env, addr, val, oi, ra);
323f83bcecbSRichard Henderson}
324f83bcecbSRichard Henderson
325f83bcecbSRichard Hendersonvoid cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
326f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
327f83bcecbSRichard Henderson{
328fc313c64SFrédéric Pétrot    MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
329fbea7a40SRichard Henderson    cpu_stq_mmu(env, addr, val, oi, ra);
330f83bcecbSRichard Henderson}
331f83bcecbSRichard Henderson
332f83bcecbSRichard Hendersonvoid cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
333f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
334f83bcecbSRichard Henderson{
335f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
336fbea7a40SRichard Henderson    cpu_stw_mmu(env, addr, val, oi, ra);
337f83bcecbSRichard Henderson}
338f83bcecbSRichard Henderson
339f83bcecbSRichard Hendersonvoid cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
340f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
341f83bcecbSRichard Henderson{
342f83bcecbSRichard Henderson    MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
343fbea7a40SRichard Henderson    cpu_stl_mmu(env, addr, val, oi, ra);
344f83bcecbSRichard Henderson}
345f83bcecbSRichard Henderson
346f83bcecbSRichard Hendersonvoid cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
347f83bcecbSRichard Henderson                          int mmu_idx, uintptr_t ra)
348f83bcecbSRichard Henderson{
349fc313c64SFrédéric Pétrot    MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
350fbea7a40SRichard Henderson    cpu_stq_mmu(env, addr, val, oi, ra);
351f83bcecbSRichard Henderson}
352f83bcecbSRichard Henderson
353f83bcecbSRichard Henderson/*--------------------------*/
354f83bcecbSRichard Henderson
355f83bcecbSRichard Hendersonuint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
356f83bcecbSRichard Henderson{
357*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
358*3b916140SRichard Henderson    return cpu_ldub_mmuidx_ra(env, addr, mmu_index, ra);
359f83bcecbSRichard Henderson}
360f83bcecbSRichard Henderson
361f83bcecbSRichard Hendersonint cpu_ldsb_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
362f83bcecbSRichard Henderson{
363f83bcecbSRichard Henderson    return (int8_t)cpu_ldub_data_ra(env, addr, ra);
364f83bcecbSRichard Henderson}
365f83bcecbSRichard Henderson
366f83bcecbSRichard Hendersonuint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
367f83bcecbSRichard Henderson{
368*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
369*3b916140SRichard Henderson    return cpu_lduw_be_mmuidx_ra(env, addr, mmu_index, ra);
370f83bcecbSRichard Henderson}
371f83bcecbSRichard Henderson
372f83bcecbSRichard Hendersonint cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
373f83bcecbSRichard Henderson{
374f83bcecbSRichard Henderson    return (int16_t)cpu_lduw_be_data_ra(env, addr, ra);
375f83bcecbSRichard Henderson}
376f83bcecbSRichard Henderson
377f83bcecbSRichard Hendersonuint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
378f83bcecbSRichard Henderson{
379*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
380*3b916140SRichard Henderson    return cpu_ldl_be_mmuidx_ra(env, addr, mmu_index, ra);
381f83bcecbSRichard Henderson}
382f83bcecbSRichard Henderson
383f83bcecbSRichard Hendersonuint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
384f83bcecbSRichard Henderson{
385*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
386*3b916140SRichard Henderson    return cpu_ldq_be_mmuidx_ra(env, addr, mmu_index, ra);
387f83bcecbSRichard Henderson}
388f83bcecbSRichard Henderson
389f83bcecbSRichard Hendersonuint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
390f83bcecbSRichard Henderson{
391*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
392*3b916140SRichard Henderson    return cpu_lduw_le_mmuidx_ra(env, addr, mmu_index, ra);
393f83bcecbSRichard Henderson}
394f83bcecbSRichard Henderson
395f83bcecbSRichard Hendersonint cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
396f83bcecbSRichard Henderson{
397f83bcecbSRichard Henderson    return (int16_t)cpu_lduw_le_data_ra(env, addr, ra);
398f83bcecbSRichard Henderson}
399f83bcecbSRichard Henderson
400f83bcecbSRichard Hendersonuint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
401f83bcecbSRichard Henderson{
402*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
403*3b916140SRichard Henderson    return cpu_ldl_le_mmuidx_ra(env, addr, mmu_index, ra);
404f83bcecbSRichard Henderson}
405f83bcecbSRichard Henderson
406f83bcecbSRichard Hendersonuint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
407f83bcecbSRichard Henderson{
408*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
409*3b916140SRichard Henderson    return cpu_ldq_le_mmuidx_ra(env, addr, mmu_index, ra);
410f83bcecbSRichard Henderson}
411f83bcecbSRichard Henderson
412f83bcecbSRichard Hendersonvoid cpu_stb_data_ra(CPUArchState *env, abi_ptr addr,
413f83bcecbSRichard Henderson                     uint32_t val, uintptr_t ra)
414f83bcecbSRichard Henderson{
415*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
416*3b916140SRichard Henderson    cpu_stb_mmuidx_ra(env, addr, val, mmu_index, ra);
417f83bcecbSRichard Henderson}
418f83bcecbSRichard Henderson
419f83bcecbSRichard Hendersonvoid cpu_stw_be_data_ra(CPUArchState *env, abi_ptr addr,
420f83bcecbSRichard Henderson                        uint32_t val, uintptr_t ra)
421f83bcecbSRichard Henderson{
422*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
423*3b916140SRichard Henderson    cpu_stw_be_mmuidx_ra(env, addr, val, mmu_index, ra);
424f83bcecbSRichard Henderson}
425f83bcecbSRichard Henderson
426f83bcecbSRichard Hendersonvoid cpu_stl_be_data_ra(CPUArchState *env, abi_ptr addr,
427f83bcecbSRichard Henderson                        uint32_t val, uintptr_t ra)
428f83bcecbSRichard Henderson{
429*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
430*3b916140SRichard Henderson    cpu_stl_be_mmuidx_ra(env, addr, val, mmu_index, ra);
431f83bcecbSRichard Henderson}
432f83bcecbSRichard Henderson
433f83bcecbSRichard Hendersonvoid cpu_stq_be_data_ra(CPUArchState *env, abi_ptr addr,
434f83bcecbSRichard Henderson                        uint64_t val, uintptr_t ra)
435f83bcecbSRichard Henderson{
436*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
437*3b916140SRichard Henderson    cpu_stq_be_mmuidx_ra(env, addr, val, mmu_index, ra);
438f83bcecbSRichard Henderson}
439f83bcecbSRichard Henderson
440f83bcecbSRichard Hendersonvoid cpu_stw_le_data_ra(CPUArchState *env, abi_ptr addr,
441f83bcecbSRichard Henderson                        uint32_t val, uintptr_t ra)
442f83bcecbSRichard Henderson{
443*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
444*3b916140SRichard Henderson    cpu_stw_le_mmuidx_ra(env, addr, val, mmu_index, ra);
445f83bcecbSRichard Henderson}
446f83bcecbSRichard Henderson
447f83bcecbSRichard Hendersonvoid cpu_stl_le_data_ra(CPUArchState *env, abi_ptr addr,
448f83bcecbSRichard Henderson                        uint32_t val, uintptr_t ra)
449f83bcecbSRichard Henderson{
450*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
451*3b916140SRichard Henderson    cpu_stl_le_mmuidx_ra(env, addr, val, mmu_index, ra);
452f83bcecbSRichard Henderson}
453f83bcecbSRichard Henderson
454f83bcecbSRichard Hendersonvoid cpu_stq_le_data_ra(CPUArchState *env, abi_ptr addr,
455f83bcecbSRichard Henderson                        uint64_t val, uintptr_t ra)
456f83bcecbSRichard Henderson{
457*3b916140SRichard Henderson    int mmu_index = cpu_mmu_index(env_cpu(env), false);
458*3b916140SRichard Henderson    cpu_stq_le_mmuidx_ra(env, addr, val, mmu_index, ra);
459f83bcecbSRichard Henderson}
460f83bcecbSRichard Henderson
461f83bcecbSRichard Henderson/*--------------------------*/
462f83bcecbSRichard Henderson
463f83bcecbSRichard Hendersonuint32_t cpu_ldub_data(CPUArchState *env, abi_ptr addr)
464f83bcecbSRichard Henderson{
465f83bcecbSRichard Henderson    return cpu_ldub_data_ra(env, addr, 0);
466f83bcecbSRichard Henderson}
467f83bcecbSRichard Henderson
468f83bcecbSRichard Hendersonint cpu_ldsb_data(CPUArchState *env, abi_ptr addr)
469f83bcecbSRichard Henderson{
470f83bcecbSRichard Henderson    return (int8_t)cpu_ldub_data(env, addr);
471f83bcecbSRichard Henderson}
472f83bcecbSRichard Henderson
473f83bcecbSRichard Hendersonuint32_t cpu_lduw_be_data(CPUArchState *env, abi_ptr addr)
474f83bcecbSRichard Henderson{
475f83bcecbSRichard Henderson    return cpu_lduw_be_data_ra(env, addr, 0);
476f83bcecbSRichard Henderson}
477f83bcecbSRichard Henderson
478f83bcecbSRichard Hendersonint cpu_ldsw_be_data(CPUArchState *env, abi_ptr addr)
479f83bcecbSRichard Henderson{
480f83bcecbSRichard Henderson    return (int16_t)cpu_lduw_be_data(env, addr);
481f83bcecbSRichard Henderson}
482f83bcecbSRichard Henderson
483f83bcecbSRichard Hendersonuint32_t cpu_ldl_be_data(CPUArchState *env, abi_ptr addr)
484f83bcecbSRichard Henderson{
485f83bcecbSRichard Henderson    return cpu_ldl_be_data_ra(env, addr, 0);
486f83bcecbSRichard Henderson}
487f83bcecbSRichard Henderson
488f83bcecbSRichard Hendersonuint64_t cpu_ldq_be_data(CPUArchState *env, abi_ptr addr)
489f83bcecbSRichard Henderson{
490f83bcecbSRichard Henderson    return cpu_ldq_be_data_ra(env, addr, 0);
491f83bcecbSRichard Henderson}
492f83bcecbSRichard Henderson
493f83bcecbSRichard Hendersonuint32_t cpu_lduw_le_data(CPUArchState *env, abi_ptr addr)
494f83bcecbSRichard Henderson{
495f83bcecbSRichard Henderson    return cpu_lduw_le_data_ra(env, addr, 0);
496f83bcecbSRichard Henderson}
497f83bcecbSRichard Henderson
498f83bcecbSRichard Hendersonint cpu_ldsw_le_data(CPUArchState *env, abi_ptr addr)
499f83bcecbSRichard Henderson{
500f83bcecbSRichard Henderson    return (int16_t)cpu_lduw_le_data(env, addr);
501f83bcecbSRichard Henderson}
502f83bcecbSRichard Henderson
503f83bcecbSRichard Hendersonuint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr addr)
504f83bcecbSRichard Henderson{
505f83bcecbSRichard Henderson    return cpu_ldl_le_data_ra(env, addr, 0);
506f83bcecbSRichard Henderson}
507f83bcecbSRichard Henderson
508f83bcecbSRichard Hendersonuint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr addr)
509f83bcecbSRichard Henderson{
510f83bcecbSRichard Henderson    return cpu_ldq_le_data_ra(env, addr, 0);
511f83bcecbSRichard Henderson}
512f83bcecbSRichard Henderson
513f83bcecbSRichard Hendersonvoid cpu_stb_data(CPUArchState *env, abi_ptr addr, uint32_t val)
514f83bcecbSRichard Henderson{
515f83bcecbSRichard Henderson    cpu_stb_data_ra(env, addr, val, 0);
516f83bcecbSRichard Henderson}
517f83bcecbSRichard Henderson
518f83bcecbSRichard Hendersonvoid cpu_stw_be_data(CPUArchState *env, abi_ptr addr, uint32_t val)
519f83bcecbSRichard Henderson{
520f83bcecbSRichard Henderson    cpu_stw_be_data_ra(env, addr, val, 0);
521f83bcecbSRichard Henderson}
522f83bcecbSRichard Henderson
523f83bcecbSRichard Hendersonvoid cpu_stl_be_data(CPUArchState *env, abi_ptr addr, uint32_t val)
524f83bcecbSRichard Henderson{
525f83bcecbSRichard Henderson    cpu_stl_be_data_ra(env, addr, val, 0);
526f83bcecbSRichard Henderson}
527f83bcecbSRichard Henderson
528f83bcecbSRichard Hendersonvoid cpu_stq_be_data(CPUArchState *env, abi_ptr addr, uint64_t val)
529f83bcecbSRichard Henderson{
530f83bcecbSRichard Henderson    cpu_stq_be_data_ra(env, addr, val, 0);
531f83bcecbSRichard Henderson}
532f83bcecbSRichard Henderson
533f83bcecbSRichard Hendersonvoid cpu_stw_le_data(CPUArchState *env, abi_ptr addr, uint32_t val)
534f83bcecbSRichard Henderson{
535f83bcecbSRichard Henderson    cpu_stw_le_data_ra(env, addr, val, 0);
536f83bcecbSRichard Henderson}
537f83bcecbSRichard Henderson
538f83bcecbSRichard Hendersonvoid cpu_stl_le_data(CPUArchState *env, abi_ptr addr, uint32_t val)
539f83bcecbSRichard Henderson{
540f83bcecbSRichard Henderson    cpu_stl_le_data_ra(env, addr, val, 0);
541f83bcecbSRichard Henderson}
542f83bcecbSRichard Henderson
543f83bcecbSRichard Hendersonvoid cpu_stq_le_data(CPUArchState *env, abi_ptr addr, uint64_t val)
544f83bcecbSRichard Henderson{
545f83bcecbSRichard Henderson    cpu_stq_le_data_ra(env, addr, val, 0);
546f83bcecbSRichard Henderson}
547