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