mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-15 22:21:57 -06:00
include/exec: Inline *_mmuidx_ra memory operations
These need to be per-target for 'abi_ptr'. Expand inline to the *_mmu api with trivial massaging of the arguments. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
efe25c260c
commit
a333692c48
2 changed files with 129 additions and 152 deletions
|
@ -248,124 +248,6 @@ void cpu_st16_mmu(CPUArchState *env, vaddr addr, Int128 val,
|
||||||
* Wrappers of the above
|
* Wrappers of the above
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
|
|
||||||
return cpu_ldb_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
return (int8_t)cpu_ldub_mmuidx_ra(env, addr, mmu_idx, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
|
|
||||||
return cpu_ldw_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
return (int16_t)cpu_lduw_be_mmuidx_ra(env, addr, mmu_idx, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
|
|
||||||
return cpu_ldl_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
|
|
||||||
return cpu_ldq_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
|
|
||||||
return cpu_ldw_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
return (int16_t)cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
|
|
||||||
return cpu_ldl_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
|
|
||||||
return cpu_ldq_mmu(env, addr, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
|
|
||||||
cpu_stb_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
|
|
||||||
cpu_stw_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
|
|
||||||
cpu_stl_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
|
|
||||||
cpu_stq_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
|
|
||||||
cpu_stw_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
|
|
||||||
cpu_stl_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
|
|
||||||
cpu_stq_mmu(env, addr, val, oi, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------*/
|
|
||||||
|
|
||||||
uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
|
uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr addr, uintptr_t ra)
|
||||||
{
|
{
|
||||||
int mmu_index = cpu_mmu_index(env_cpu(env), false);
|
int mmu_index = cpu_mmu_index(env_cpu(env), false);
|
||||||
|
|
|
@ -119,41 +119,136 @@ void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
uint64_t val, uintptr_t ra);
|
uint64_t val, uintptr_t ra);
|
||||||
|
|
||||||
uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
static inline uint32_t
|
||||||
int mmu_idx, uintptr_t ra);
|
cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr, int mmu_idx, uintptr_t ra)
|
||||||
int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
{
|
||||||
int mmu_idx, uintptr_t ra);
|
MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
|
||||||
uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
return cpu_ldb_mmu(env, addr, oi, ra);
|
||||||
int mmu_idx, uintptr_t ra);
|
}
|
||||||
int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
|
|
||||||
void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint32_t val,
|
static inline int
|
||||||
int mmu_idx, uintptr_t ra);
|
cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr, int mmu_idx, uintptr_t ra)
|
||||||
void cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint32_t val,
|
{
|
||||||
int mmu_idx, uintptr_t ra);
|
return (int8_t)cpu_ldub_mmuidx_ra(env, addr, mmu_idx, ra);
|
||||||
void cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint32_t val,
|
}
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
void cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint64_t val,
|
static inline uint32_t
|
||||||
int mmu_idx, uintptr_t ra);
|
cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
void cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint32_t val,
|
int mmu_idx, uintptr_t ra)
|
||||||
int mmu_idx, uintptr_t ra);
|
{
|
||||||
void cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint32_t val,
|
MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
|
||||||
int mmu_idx, uintptr_t ra);
|
return cpu_ldw_mmu(env, addr, oi, ra);
|
||||||
void cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr ptr, uint64_t val,
|
}
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
|
static inline int
|
||||||
|
cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return (int16_t)cpu_lduw_be_mmuidx_ra(env, addr, mmu_idx, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
|
||||||
|
return cpu_ldl_mmu(env, addr, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
|
||||||
|
return cpu_ldq_mmu(env, addr, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
|
||||||
|
return cpu_ldw_mmu(env, addr, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return (int16_t)cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
|
||||||
|
return cpu_ldl_mmu(env, addr, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
|
||||||
|
return cpu_ldq_mmu(env, addr, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_UB, mmu_idx);
|
||||||
|
cpu_stb_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_BEUW | MO_UNALN, mmu_idx);
|
||||||
|
cpu_stw_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_BEUL | MO_UNALN, mmu_idx);
|
||||||
|
cpu_stl_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_BEUQ | MO_UNALN, mmu_idx);
|
||||||
|
cpu_stq_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_LEUW | MO_UNALN, mmu_idx);
|
||||||
|
cpu_stw_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_LEUL | MO_UNALN, mmu_idx);
|
||||||
|
cpu_stl_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
MemOpIdx oi = make_memop_idx(MO_LEUQ | MO_UNALN, mmu_idx);
|
||||||
|
cpu_stq_mmu(env, addr, val, oi, ra);
|
||||||
|
}
|
||||||
|
|
||||||
#if TARGET_BIG_ENDIAN
|
#if TARGET_BIG_ENDIAN
|
||||||
# define cpu_lduw_data cpu_lduw_be_data
|
# define cpu_lduw_data cpu_lduw_be_data
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue