mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-26 19:42:33 -06:00
accel/tcg: Add endian-specific cpu_{ld, st}* operations
We currently have target-endian versions of these operations, but no easy way to force a specific endianness. This can be helpful if the target has endian-specific operations, or a mode that swaps endianness. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20200508154359.7494-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
069cfe77d6
commit
b9e60257c1
4 changed files with 587 additions and 182 deletions
|
@ -1772,36 +1772,54 @@ int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
full_ldub_mmu);
|
full_ldub_mmu);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_lduw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra)
|
int mmu_idx, uintptr_t ra)
|
||||||
{
|
{
|
||||||
return cpu_load_helper(env, addr, mmu_idx, ra, MO_TEUW,
|
return cpu_load_helper(env, addr, mmu_idx, ra, MO_BEUW, full_be_lduw_mmu);
|
||||||
MO_TE == MO_LE
|
|
||||||
? full_le_lduw_mmu : full_be_lduw_mmu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu_ldsw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra)
|
int mmu_idx, uintptr_t ra)
|
||||||
{
|
{
|
||||||
return (int16_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_TESW,
|
return (int16_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_BESW,
|
||||||
MO_TE == MO_LE
|
full_be_lduw_mmu);
|
||||||
? full_le_lduw_mmu : full_be_lduw_mmu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldl_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra)
|
int mmu_idx, uintptr_t ra)
|
||||||
{
|
{
|
||||||
return cpu_load_helper(env, addr, mmu_idx, ra, MO_TEUL,
|
return cpu_load_helper(env, addr, mmu_idx, ra, MO_BEUL, full_be_ldul_mmu);
|
||||||
MO_TE == MO_LE
|
|
||||||
? full_le_ldul_mmu : full_be_ldul_mmu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t cpu_ldq_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra)
|
int mmu_idx, uintptr_t ra)
|
||||||
{
|
{
|
||||||
return cpu_load_helper(env, addr, mmu_idx, ra, MO_TEQ,
|
return cpu_load_helper(env, addr, mmu_idx, ra, MO_BEQ, helper_be_ldq_mmu);
|
||||||
MO_TE == MO_LE
|
}
|
||||||
? helper_le_ldq_mmu : helper_be_ldq_mmu);
|
|
||||||
|
uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_load_helper(env, addr, mmu_idx, ra, MO_LEUW, full_le_lduw_mmu);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return (int16_t)cpu_load_helper(env, addr, mmu_idx, ra, MO_LESW,
|
||||||
|
full_le_lduw_mmu);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_load_helper(env, addr, mmu_idx, ra, MO_LEUL, full_le_ldul_mmu);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_load_helper(env, addr, mmu_idx, ra, MO_LEQ, helper_le_ldq_mmu);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldub_data_ra(CPUArchState *env, target_ulong ptr,
|
uint32_t cpu_ldub_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
@ -1815,25 +1833,50 @@ int cpu_ldsb_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
|
||||||
return cpu_ldsb_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
return cpu_ldsb_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_lduw_data_ra(CPUArchState *env, target_ulong ptr,
|
uint32_t cpu_lduw_be_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
uintptr_t retaddr)
|
uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
return cpu_lduw_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
return cpu_lduw_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu_ldsw_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
|
int cpu_ldsw_be_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
return cpu_ldsw_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
return cpu_ldsw_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldl_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
|
uint32_t cpu_ldl_be_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
return cpu_ldl_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
return cpu_ldl_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t cpu_ldq_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
|
uint64_t cpu_ldq_be_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
return cpu_ldq_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
return cpu_ldq_be_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_le_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
return cpu_lduw_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_ldsw_le_data_ra(CPUArchState *env, target_ulong ptr, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
return cpu_ldsw_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_ldl_le_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
return cpu_ldl_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t cpu_ldq_le_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
return cpu_ldq_le_mmuidx_ra(env, ptr, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldub_data(CPUArchState *env, target_ulong ptr)
|
uint32_t cpu_ldub_data(CPUArchState *env, target_ulong ptr)
|
||||||
|
@ -1846,24 +1889,44 @@ int cpu_ldsb_data(CPUArchState *env, target_ulong ptr)
|
||||||
return cpu_ldsb_data_ra(env, ptr, 0);
|
return cpu_ldsb_data_ra(env, ptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_lduw_data(CPUArchState *env, target_ulong ptr)
|
uint32_t cpu_lduw_be_data(CPUArchState *env, target_ulong ptr)
|
||||||
{
|
{
|
||||||
return cpu_lduw_data_ra(env, ptr, 0);
|
return cpu_lduw_be_data_ra(env, ptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu_ldsw_data(CPUArchState *env, target_ulong ptr)
|
int cpu_ldsw_be_data(CPUArchState *env, target_ulong ptr)
|
||||||
{
|
{
|
||||||
return cpu_ldsw_data_ra(env, ptr, 0);
|
return cpu_ldsw_be_data_ra(env, ptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldl_data(CPUArchState *env, target_ulong ptr)
|
uint32_t cpu_ldl_be_data(CPUArchState *env, target_ulong ptr)
|
||||||
{
|
{
|
||||||
return cpu_ldl_data_ra(env, ptr, 0);
|
return cpu_ldl_be_data_ra(env, ptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t cpu_ldq_data(CPUArchState *env, target_ulong ptr)
|
uint64_t cpu_ldq_be_data(CPUArchState *env, target_ulong ptr)
|
||||||
{
|
{
|
||||||
return cpu_ldq_data_ra(env, ptr, 0);
|
return cpu_ldq_be_data_ra(env, ptr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_le_data(CPUArchState *env, target_ulong ptr)
|
||||||
|
{
|
||||||
|
return cpu_lduw_le_data_ra(env, ptr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_ldsw_le_data(CPUArchState *env, target_ulong ptr)
|
||||||
|
{
|
||||||
|
return cpu_ldsw_le_data_ra(env, ptr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_ldl_le_data(CPUArchState *env, target_ulong ptr)
|
||||||
|
{
|
||||||
|
return cpu_ldl_le_data_ra(env, ptr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t cpu_ldq_le_data(CPUArchState *env, target_ulong ptr)
|
||||||
|
{
|
||||||
|
return cpu_ldq_le_data_ra(env, ptr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2121,22 +2184,40 @@ void cpu_stb_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||||
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_UB);
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_UB);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stw_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
void cpu_stw_be_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||||
int mmu_idx, uintptr_t retaddr)
|
int mmu_idx, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_TEUW);
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_BEUW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stl_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
void cpu_stl_be_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||||
int mmu_idx, uintptr_t retaddr)
|
int mmu_idx, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_TEUL);
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_BEUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stq_mmuidx_ra(CPUArchState *env, target_ulong addr, uint64_t val,
|
void cpu_stq_be_mmuidx_ra(CPUArchState *env, target_ulong addr, uint64_t val,
|
||||||
int mmu_idx, uintptr_t retaddr)
|
int mmu_idx, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_TEQ);
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_BEQ);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stw_le_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_LEUW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stl_le_mmuidx_ra(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_LEUL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stq_le_mmuidx_ra(CPUArchState *env, target_ulong addr, uint64_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
cpu_store_helper(env, addr, val, mmu_idx, retaddr, MO_LEQ);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stb_data_ra(CPUArchState *env, target_ulong ptr,
|
void cpu_stb_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
@ -2145,22 +2226,40 @@ void cpu_stb_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
cpu_stb_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
cpu_stb_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stw_data_ra(CPUArchState *env, target_ulong ptr,
|
void cpu_stw_be_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
uint32_t val, uintptr_t retaddr)
|
uint32_t val, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
cpu_stw_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
cpu_stw_be_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stl_data_ra(CPUArchState *env, target_ulong ptr,
|
void cpu_stl_be_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
uint32_t val, uintptr_t retaddr)
|
uint32_t val, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
cpu_stl_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
cpu_stl_be_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stq_data_ra(CPUArchState *env, target_ulong ptr,
|
void cpu_stq_be_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
uint64_t val, uintptr_t retaddr)
|
uint64_t val, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
cpu_stq_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
cpu_stq_be_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stw_le_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uint32_t val, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
cpu_stw_le_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stl_le_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uint32_t val, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
cpu_stl_le_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stq_le_data_ra(CPUArchState *env, target_ulong ptr,
|
||||||
|
uint64_t val, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
cpu_stq_le_mmuidx_ra(env, ptr, val, cpu_mmu_index(env, false), retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stb_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
void cpu_stb_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
||||||
|
@ -2168,19 +2267,34 @@ void cpu_stb_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
||||||
cpu_stb_data_ra(env, ptr, val, 0);
|
cpu_stb_data_ra(env, ptr, val, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stw_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
void cpu_stw_be_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
||||||
{
|
{
|
||||||
cpu_stw_data_ra(env, ptr, val, 0);
|
cpu_stw_be_data_ra(env, ptr, val, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stl_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
void cpu_stl_be_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
||||||
{
|
{
|
||||||
cpu_stl_data_ra(env, ptr, val, 0);
|
cpu_stl_be_data_ra(env, ptr, val, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stq_data(CPUArchState *env, target_ulong ptr, uint64_t val)
|
void cpu_stq_be_data(CPUArchState *env, target_ulong ptr, uint64_t val)
|
||||||
{
|
{
|
||||||
cpu_stq_data_ra(env, ptr, val, 0);
|
cpu_stq_be_data_ra(env, ptr, val, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stw_le_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
||||||
|
{
|
||||||
|
cpu_stw_le_data_ra(env, ptr, val, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stl_le_data(CPUArchState *env, target_ulong ptr, uint32_t val)
|
||||||
|
{
|
||||||
|
cpu_stl_le_data_ra(env, ptr, val, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stq_le_data(CPUArchState *env, target_ulong ptr, uint64_t val)
|
||||||
|
{
|
||||||
|
cpu_stq_le_data_ra(env, ptr, val, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First set of helpers allows passing in of OI and RETADDR. This makes
|
/* First set of helpers allows passing in of OI and RETADDR. This makes
|
||||||
|
|
|
@ -783,46 +783,90 @@ int cpu_ldsb_data(CPUArchState *env, abi_ptr ptr)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_lduw_data(CPUArchState *env, abi_ptr ptr)
|
uint32_t cpu_lduw_be_data(CPUArchState *env, abi_ptr ptr)
|
||||||
{
|
{
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TEUW, MMU_USER_IDX, false);
|
uint16_t meminfo = trace_mem_get_info(MO_BEUW, MMU_USER_IDX, false);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
ret = lduw_p(g2h(ptr));
|
ret = lduw_be_p(g2h(ptr));
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu_ldsw_data(CPUArchState *env, abi_ptr ptr)
|
int cpu_ldsw_be_data(CPUArchState *env, abi_ptr ptr)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TESW, MMU_USER_IDX, false);
|
uint16_t meminfo = trace_mem_get_info(MO_BESW, MMU_USER_IDX, false);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
ret = ldsw_p(g2h(ptr));
|
ret = ldsw_be_p(g2h(ptr));
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldl_data(CPUArchState *env, abi_ptr ptr)
|
uint32_t cpu_ldl_be_data(CPUArchState *env, abi_ptr ptr)
|
||||||
{
|
{
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TEUL, MMU_USER_IDX, false);
|
uint16_t meminfo = trace_mem_get_info(MO_BEUL, MMU_USER_IDX, false);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
ret = ldl_p(g2h(ptr));
|
ret = ldl_be_p(g2h(ptr));
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t cpu_ldq_data(CPUArchState *env, abi_ptr ptr)
|
uint64_t cpu_ldq_be_data(CPUArchState *env, abi_ptr ptr)
|
||||||
{
|
{
|
||||||
uint64_t ret;
|
uint64_t ret;
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TEQ, MMU_USER_IDX, false);
|
uint16_t meminfo = trace_mem_get_info(MO_BEQ, MMU_USER_IDX, false);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
ret = ldq_p(g2h(ptr));
|
ret = ldq_be_p(g2h(ptr));
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_le_data(CPUArchState *env, abi_ptr ptr)
|
||||||
|
{
|
||||||
|
uint32_t ret;
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LEUW, MMU_USER_IDX, false);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
ret = lduw_le_p(g2h(ptr));
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_ldsw_le_data(CPUArchState *env, abi_ptr ptr)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LESW, MMU_USER_IDX, false);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
ret = ldsw_le_p(g2h(ptr));
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr ptr)
|
||||||
|
{
|
||||||
|
uint32_t ret;
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LEUL, MMU_USER_IDX, false);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
ret = ldl_le_p(g2h(ptr));
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr ptr)
|
||||||
|
{
|
||||||
|
uint64_t ret;
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LEQ, MMU_USER_IDX, false);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
ret = ldq_le_p(g2h(ptr));
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -847,42 +891,82 @@ int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_lduw_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
|
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
ret = cpu_lduw_data(env, ptr);
|
ret = cpu_lduw_be_data(env, ptr);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cpu_ldsw_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
ret = cpu_ldsw_data(env, ptr);
|
ret = cpu_ldsw_be_data(env, ptr);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cpu_ldl_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
|
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
ret = cpu_ldl_data(env, ptr);
|
ret = cpu_ldl_be_data(env, ptr);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t cpu_ldq_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
uint64_t ret;
|
uint64_t ret;
|
||||||
|
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
ret = cpu_ldq_data(env, ptr);
|
ret = cpu_ldq_be_data(env, ptr);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
uint32_t ret;
|
||||||
|
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
ret = cpu_lduw_le_data(env, ptr);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
ret = cpu_ldsw_le_data(env, ptr);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
uint32_t ret;
|
||||||
|
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
ret = cpu_ldl_le_data(env, ptr);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
uint64_t ret;
|
||||||
|
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
ret = cpu_ldq_le_data(env, ptr);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -896,30 +980,57 @@ void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stw_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
void cpu_stw_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
||||||
{
|
{
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TEUW, MMU_USER_IDX, true);
|
uint16_t meminfo = trace_mem_get_info(MO_BEUW, MMU_USER_IDX, true);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
stw_p(g2h(ptr), val);
|
stw_be_p(g2h(ptr), val);
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stl_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
void cpu_stl_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
||||||
{
|
{
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TEUL, MMU_USER_IDX, true);
|
uint16_t meminfo = trace_mem_get_info(MO_BEUL, MMU_USER_IDX, true);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
stl_p(g2h(ptr), val);
|
stl_be_p(g2h(ptr), val);
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stq_data(CPUArchState *env, abi_ptr ptr, uint64_t val)
|
void cpu_stq_be_data(CPUArchState *env, abi_ptr ptr, uint64_t val)
|
||||||
{
|
{
|
||||||
uint16_t meminfo = trace_mem_get_info(MO_TEQ, MMU_USER_IDX, true);
|
uint16_t meminfo = trace_mem_get_info(MO_BEQ, MMU_USER_IDX, true);
|
||||||
|
|
||||||
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
stq_p(g2h(ptr), val);
|
stq_be_p(g2h(ptr), val);
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stw_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
||||||
|
{
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LEUW, MMU_USER_IDX, true);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
stw_le_p(g2h(ptr), val);
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stl_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val)
|
||||||
|
{
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LEUL, MMU_USER_IDX, true);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
stl_le_p(g2h(ptr), val);
|
||||||
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stq_le_data(CPUArchState *env, abi_ptr ptr, uint64_t val)
|
||||||
|
{
|
||||||
|
uint16_t meminfo = trace_mem_get_info(MO_LEQ, MMU_USER_IDX, true);
|
||||||
|
|
||||||
|
trace_guest_mem_before_exec(env_cpu(env), ptr, meminfo);
|
||||||
|
stq_le_p(g2h(ptr), val);
|
||||||
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
qemu_plugin_vcpu_mem_cb(env_cpu(env), ptr, meminfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -931,27 +1042,51 @@ void cpu_stb_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stw_data_ra(CPUArchState *env, abi_ptr ptr,
|
void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
uint32_t val, uintptr_t retaddr)
|
uint32_t val, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
cpu_stw_data(env, ptr, val);
|
cpu_stw_be_data(env, ptr, val);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stl_data_ra(CPUArchState *env, abi_ptr ptr,
|
void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
uint32_t val, uintptr_t retaddr)
|
uint32_t val, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
cpu_stl_data(env, ptr, val);
|
cpu_stl_be_data(env, ptr, val);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cpu_stq_data_ra(CPUArchState *env, abi_ptr ptr,
|
void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
uint64_t val, uintptr_t retaddr)
|
uint64_t val, uintptr_t retaddr)
|
||||||
{
|
{
|
||||||
set_helper_retaddr(retaddr);
|
set_helper_retaddr(retaddr);
|
||||||
cpu_stq_data(env, ptr, val);
|
cpu_stq_be_data(env, ptr, val);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint32_t val, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
cpu_stw_le_data(env, ptr, val);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint32_t val, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
cpu_stl_le_data(env, ptr, val);
|
||||||
|
clear_helper_retaddr();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint64_t val, uintptr_t retaddr)
|
||||||
|
{
|
||||||
|
set_helper_retaddr(retaddr);
|
||||||
|
cpu_stq_le_data(env, ptr, val);
|
||||||
clear_helper_retaddr();
|
clear_helper_retaddr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,9 +97,9 @@ function, which is a return address into the generated code.
|
||||||
|
|
||||||
Function names follow the pattern:
|
Function names follow the pattern:
|
||||||
|
|
||||||
load: ``cpu_ld{sign}{size}_mmuidx_ra(env, ptr, mmuidx, retaddr)``
|
load: ``cpu_ld{sign}{size}{end}_mmuidx_ra(env, ptr, mmuidx, retaddr)``
|
||||||
|
|
||||||
store: ``cpu_st{size}_mmuidx_ra(env, ptr, val, mmuidx, retaddr)``
|
store: ``cpu_st{size}{end}_mmuidx_ra(env, ptr, val, mmuidx, retaddr)``
|
||||||
|
|
||||||
``sign``
|
``sign``
|
||||||
- (empty) : for 32 or 64 bit sizes
|
- (empty) : for 32 or 64 bit sizes
|
||||||
|
@ -112,9 +112,14 @@ store: ``cpu_st{size}_mmuidx_ra(env, ptr, val, mmuidx, retaddr)``
|
||||||
- ``l`` : 32 bits
|
- ``l`` : 32 bits
|
||||||
- ``q`` : 64 bits
|
- ``q`` : 64 bits
|
||||||
|
|
||||||
|
``end``
|
||||||
|
- (empty) : for target endian, or 8 bit sizes
|
||||||
|
- ``_be`` : big endian
|
||||||
|
- ``_le`` : little endian
|
||||||
|
|
||||||
Regexes for git grep:
|
Regexes for git grep:
|
||||||
- ``\<cpu_ld[us]\?[bwlq]_mmuidx_ra\>``
|
- ``\<cpu_ld[us]\?[bwlq](_[bl]e)\?_mmuidx_ra\>``
|
||||||
- ``\<cpu_st[bwlq]_mmuidx_ra\>``
|
- ``\<cpu_st[bwlq](_[bl]e)\?_mmuidx_ra\>``
|
||||||
|
|
||||||
``cpu_{ld,st}*_data_ra``
|
``cpu_{ld,st}*_data_ra``
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -129,9 +134,9 @@ be performed with a context other than the default.
|
||||||
|
|
||||||
Function names follow the pattern:
|
Function names follow the pattern:
|
||||||
|
|
||||||
load: ``cpu_ld{sign}{size}_data_ra(env, ptr, ra)``
|
load: ``cpu_ld{sign}{size}{end}_data_ra(env, ptr, ra)``
|
||||||
|
|
||||||
store: ``cpu_st{size}_data_ra(env, ptr, val, ra)``
|
store: ``cpu_st{size}{end}_data_ra(env, ptr, val, ra)``
|
||||||
|
|
||||||
``sign``
|
``sign``
|
||||||
- (empty) : for 32 or 64 bit sizes
|
- (empty) : for 32 or 64 bit sizes
|
||||||
|
@ -144,9 +149,14 @@ store: ``cpu_st{size}_data_ra(env, ptr, val, ra)``
|
||||||
- ``l`` : 32 bits
|
- ``l`` : 32 bits
|
||||||
- ``q`` : 64 bits
|
- ``q`` : 64 bits
|
||||||
|
|
||||||
|
``end``
|
||||||
|
- (empty) : for target endian, or 8 bit sizes
|
||||||
|
- ``_be`` : big endian
|
||||||
|
- ``_le`` : little endian
|
||||||
|
|
||||||
Regexes for git grep:
|
Regexes for git grep:
|
||||||
- ``\<cpu_ld[us]\?[bwlq]_data_ra\>``
|
- ``\<cpu_ld[us]\?[bwlq](_[bl]e)\?_data_ra\>``
|
||||||
- ``\<cpu_st[bwlq]_data_ra\>``
|
- ``\<cpu_st[bwlq](_[bl]e)\?_data_ra\>``
|
||||||
|
|
||||||
``cpu_{ld,st}*_data``
|
``cpu_{ld,st}*_data``
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -163,9 +173,9 @@ the CPU state anyway.
|
||||||
|
|
||||||
Function names follow the pattern:
|
Function names follow the pattern:
|
||||||
|
|
||||||
load: ``cpu_ld{sign}{size}_data(env, ptr)``
|
load: ``cpu_ld{sign}{size}{end}_data(env, ptr)``
|
||||||
|
|
||||||
store: ``cpu_st{size}_data(env, ptr, val)``
|
store: ``cpu_st{size}{end}_data(env, ptr, val)``
|
||||||
|
|
||||||
``sign``
|
``sign``
|
||||||
- (empty) : for 32 or 64 bit sizes
|
- (empty) : for 32 or 64 bit sizes
|
||||||
|
@ -178,9 +188,14 @@ store: ``cpu_st{size}_data(env, ptr, val)``
|
||||||
- ``l`` : 32 bits
|
- ``l`` : 32 bits
|
||||||
- ``q`` : 64 bits
|
- ``q`` : 64 bits
|
||||||
|
|
||||||
|
``end``
|
||||||
|
- (empty) : for target endian, or 8 bit sizes
|
||||||
|
- ``_be`` : big endian
|
||||||
|
- ``_le`` : little endian
|
||||||
|
|
||||||
Regexes for git grep
|
Regexes for git grep
|
||||||
- ``\<cpu_ld[us]\?[bwlq]_data\>``
|
- ``\<cpu_ld[us]\?[bwlq](_[bl]e)\?_data\>``
|
||||||
- ``\<cpu_st[bwlq]_data\+\>``
|
- ``\<cpu_st[bwlq](_[bl]e)\?_data\+\>``
|
||||||
|
|
||||||
``cpu_ld*_code``
|
``cpu_ld*_code``
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
*
|
*
|
||||||
* The syntax for the accessors is:
|
* The syntax for the accessors is:
|
||||||
*
|
*
|
||||||
* load: cpu_ld{sign}{size}_{mmusuffix}(env, ptr)
|
* load: cpu_ld{sign}{size}{end}_{mmusuffix}(env, ptr)
|
||||||
* cpu_ld{sign}{size}_{mmusuffix}_ra(env, ptr, retaddr)
|
* cpu_ld{sign}{size}{end}_{mmusuffix}_ra(env, ptr, retaddr)
|
||||||
* cpu_ld{sign}{size}_mmuidx_ra(env, ptr, mmu_idx, retaddr)
|
* cpu_ld{sign}{size}{end}_mmuidx_ra(env, ptr, mmu_idx, retaddr)
|
||||||
*
|
*
|
||||||
* store: cpu_st{size}_{mmusuffix}(env, ptr, val)
|
* store: cpu_st{size}{end}_{mmusuffix}(env, ptr, val)
|
||||||
* cpu_st{size}_{mmusuffix}_ra(env, ptr, val, retaddr)
|
* cpu_st{size}{end}_{mmusuffix}_ra(env, ptr, val, retaddr)
|
||||||
* cpu_st{size}_mmuidx_ra(env, ptr, val, mmu_idx, retaddr)
|
* cpu_st{size}{end}_mmuidx_ra(env, ptr, val, mmu_idx, retaddr)
|
||||||
*
|
*
|
||||||
* sign is:
|
* sign is:
|
||||||
* (empty): for 32 and 64 bit sizes
|
* (empty): for 32 and 64 bit sizes
|
||||||
|
@ -44,6 +44,11 @@
|
||||||
* l: 32 bits
|
* l: 32 bits
|
||||||
* q: 64 bits
|
* q: 64 bits
|
||||||
*
|
*
|
||||||
|
* end is:
|
||||||
|
* (empty): for target native endian, or for 8 bit access
|
||||||
|
* _be: for forced big endian
|
||||||
|
* _le: for forced little endian
|
||||||
|
*
|
||||||
* mmusuffix is one of the generic suffixes "data" or "code", or "mmuidx".
|
* mmusuffix is one of the generic suffixes "data" or "code", or "mmuidx".
|
||||||
* The "mmuidx" suffix carries an extra mmu_idx argument that specifies
|
* The "mmuidx" suffix carries an extra mmu_idx argument that specifies
|
||||||
* the index to use; the "data" and "code" suffixes take the index from
|
* the index to use; the "data" and "code" suffixes take the index from
|
||||||
|
@ -95,32 +100,57 @@ typedef target_ulong abi_ptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr ptr);
|
uint32_t cpu_ldub_data(CPUArchState *env, abi_ptr ptr);
|
||||||
uint32_t cpu_lduw_data(CPUArchState *env, abi_ptr ptr);
|
|
||||||
uint32_t cpu_ldl_data(CPUArchState *env, abi_ptr ptr);
|
|
||||||
uint64_t cpu_ldq_data(CPUArchState *env, abi_ptr ptr);
|
|
||||||
int cpu_ldsb_data(CPUArchState *env, abi_ptr ptr);
|
int cpu_ldsb_data(CPUArchState *env, abi_ptr ptr);
|
||||||
int cpu_ldsw_data(CPUArchState *env, abi_ptr ptr);
|
|
||||||
|
|
||||||
uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr);
|
uint32_t cpu_lduw_be_data(CPUArchState *env, abi_ptr ptr);
|
||||||
uint32_t cpu_lduw_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr);
|
int cpu_ldsw_be_data(CPUArchState *env, abi_ptr ptr);
|
||||||
uint32_t cpu_ldl_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr);
|
uint32_t cpu_ldl_be_data(CPUArchState *env, abi_ptr ptr);
|
||||||
uint64_t cpu_ldq_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr);
|
uint64_t cpu_ldq_be_data(CPUArchState *env, abi_ptr ptr);
|
||||||
int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr);
|
|
||||||
int cpu_ldsw_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t retaddr);
|
uint32_t cpu_lduw_le_data(CPUArchState *env, abi_ptr ptr);
|
||||||
|
int cpu_ldsw_le_data(CPUArchState *env, abi_ptr ptr);
|
||||||
|
uint32_t cpu_ldl_le_data(CPUArchState *env, abi_ptr ptr);
|
||||||
|
uint64_t cpu_ldq_le_data(CPUArchState *env, abi_ptr ptr);
|
||||||
|
|
||||||
|
uint32_t cpu_ldub_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
int cpu_ldsb_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
int cpu_ldsw_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
uint32_t cpu_ldl_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
uint64_t cpu_ldq_be_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
int cpu_ldsw_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
uint32_t cpu_ldl_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
uint64_t cpu_ldq_le_data_ra(CPUArchState *env, abi_ptr ptr, uintptr_t ra);
|
||||||
|
|
||||||
void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
void cpu_stb_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
||||||
void cpu_stw_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
|
||||||
void cpu_stl_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
void cpu_stw_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
||||||
void cpu_stq_data(CPUArchState *env, abi_ptr ptr, uint64_t val);
|
void cpu_stl_be_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
||||||
|
void cpu_stq_be_data(CPUArchState *env, abi_ptr ptr, uint64_t val);
|
||||||
|
|
||||||
|
void cpu_stw_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
||||||
|
void cpu_stl_le_data(CPUArchState *env, abi_ptr ptr, uint32_t val);
|
||||||
|
void cpu_stq_le_data(CPUArchState *env, abi_ptr ptr, uint64_t val);
|
||||||
|
|
||||||
void cpu_stb_data_ra(CPUArchState *env, abi_ptr ptr,
|
void cpu_stb_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
uint32_t val, uintptr_t retaddr);
|
uint32_t val, uintptr_t ra);
|
||||||
void cpu_stw_data_ra(CPUArchState *env, abi_ptr ptr,
|
|
||||||
uint32_t val, uintptr_t retaddr);
|
void cpu_stw_be_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
void cpu_stl_data_ra(CPUArchState *env, abi_ptr ptr,
|
uint32_t val, uintptr_t ra);
|
||||||
uint32_t val, uintptr_t retaddr);
|
void cpu_stl_be_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
void cpu_stq_data_ra(CPUArchState *env, abi_ptr ptr,
|
uint32_t val, uintptr_t ra);
|
||||||
uint64_t val, uintptr_t retaddr);
|
void cpu_stq_be_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint64_t val, uintptr_t ra);
|
||||||
|
|
||||||
|
void cpu_stw_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint32_t val, uintptr_t ra);
|
||||||
|
void cpu_stl_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint32_t val, uintptr_t ra);
|
||||||
|
void cpu_stq_le_data_ra(CPUArchState *env, abi_ptr ptr,
|
||||||
|
uint64_t val, uintptr_t ra);
|
||||||
|
|
||||||
#if defined(CONFIG_USER_ONLY)
|
#if defined(CONFIG_USER_ONLY)
|
||||||
|
|
||||||
|
@ -157,34 +187,58 @@ static inline uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
return cpu_ldub_data_ra(env, addr, ra);
|
return cpu_ldub_data_ra(env, addr, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t cpu_lduw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
return cpu_lduw_data_ra(env, addr, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint32_t cpu_ldl_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
return cpu_ldl_data_ra(env, addr, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint64_t cpu_ldq_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra)
|
|
||||||
{
|
|
||||||
return cpu_ldq_data_ra(env, addr, ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
static inline int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra)
|
int mmu_idx, uintptr_t ra)
|
||||||
{
|
{
|
||||||
return cpu_ldsb_data_ra(env, addr, ra);
|
return cpu_ldsb_data_ra(env, addr, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int cpu_ldsw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
static inline uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra)
|
int mmu_idx, uintptr_t ra)
|
||||||
{
|
{
|
||||||
return cpu_ldsw_data_ra(env, addr, ra);
|
return cpu_lduw_be_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_ldsw_be_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_ldl_be_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_ldq_be_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_lduw_le_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_ldsw_le_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_ldl_le_data_ra(env, addr, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra)
|
||||||
|
{
|
||||||
|
return cpu_ldq_le_data_ra(env, addr, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
static inline void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
@ -193,22 +247,46 @@ static inline void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
cpu_stb_data_ra(env, addr, val, ra);
|
cpu_stb_data_ra(env, addr, val, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void cpu_stw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
static inline void cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
uint32_t val, int mmu_idx, uintptr_t ra)
|
uint32_t val, int mmu_idx,
|
||||||
|
uintptr_t ra)
|
||||||
{
|
{
|
||||||
cpu_stw_data_ra(env, addr, val, ra);
|
cpu_stw_be_data_ra(env, addr, val, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void cpu_stl_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
static inline void cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
uint32_t val, int mmu_idx, uintptr_t ra)
|
uint32_t val, int mmu_idx,
|
||||||
|
uintptr_t ra)
|
||||||
{
|
{
|
||||||
cpu_stl_data_ra(env, addr, val, ra);
|
cpu_stl_be_data_ra(env, addr, val, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void cpu_stq_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
static inline void cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
uint64_t val, int mmu_idx, uintptr_t ra)
|
uint64_t val, int mmu_idx,
|
||||||
|
uintptr_t ra)
|
||||||
{
|
{
|
||||||
cpu_stq_data_ra(env, addr, val, ra);
|
cpu_stq_be_data_ra(env, addr, val, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
uint32_t val, int mmu_idx,
|
||||||
|
uintptr_t ra)
|
||||||
|
{
|
||||||
|
cpu_stw_le_data_ra(env, addr, val, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
uint32_t val, int mmu_idx,
|
||||||
|
uintptr_t ra)
|
||||||
|
{
|
||||||
|
cpu_stl_le_data_ra(env, addr, val, ra);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
uint64_t val, int mmu_idx,
|
||||||
|
uintptr_t ra)
|
||||||
|
{
|
||||||
|
cpu_stq_le_data_ra(env, addr, val, ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -243,29 +321,92 @@ static inline CPUTLBEntry *tlb_entry(CPUArchState *env, uintptr_t mmu_idx,
|
||||||
|
|
||||||
uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
uint32_t cpu_ldub_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra);
|
int mmu_idx, uintptr_t ra);
|
||||||
uint32_t cpu_lduw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint32_t cpu_ldl_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
uint64_t cpu_ldq_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
|
||||||
|
|
||||||
int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
int cpu_ldsb_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
int mmu_idx, uintptr_t ra);
|
int mmu_idx, uintptr_t ra);
|
||||||
int cpu_ldsw_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
|
||||||
int mmu_idx, uintptr_t ra);
|
uint32_t cpu_lduw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
int cpu_ldsw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
uint32_t cpu_ldl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
uint64_t cpu_ldq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
|
||||||
|
uint32_t cpu_lduw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
int cpu_ldsw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
uint32_t cpu_ldl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
uint64_t cpu_ldq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr,
|
||||||
|
int mmu_idx, uintptr_t ra);
|
||||||
|
|
||||||
void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
void cpu_stb_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
int mmu_idx, uintptr_t retaddr);
|
int mmu_idx, uintptr_t retaddr);
|
||||||
void cpu_stw_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
|
||||||
int mmu_idx, uintptr_t retaddr);
|
void cpu_stw_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
void cpu_stl_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
int mmu_idx, uintptr_t retaddr);
|
||||||
int mmu_idx, uintptr_t retaddr);
|
void cpu_stl_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
void cpu_stq_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
int mmu_idx, uintptr_t retaddr);
|
||||||
int mmu_idx, uintptr_t retaddr);
|
void cpu_stq_be_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr);
|
||||||
|
|
||||||
|
void cpu_stw_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr);
|
||||||
|
void cpu_stl_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint32_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr);
|
||||||
|
void cpu_stq_le_mmuidx_ra(CPUArchState *env, abi_ptr addr, uint64_t val,
|
||||||
|
int mmu_idx, uintptr_t retaddr);
|
||||||
|
|
||||||
#endif /* defined(CONFIG_USER_ONLY) */
|
#endif /* defined(CONFIG_USER_ONLY) */
|
||||||
|
|
||||||
|
#ifdef TARGET_WORDS_BIGENDIAN
|
||||||
|
# define cpu_lduw_data cpu_lduw_be_data
|
||||||
|
# define cpu_ldsw_data cpu_ldsw_be_data
|
||||||
|
# define cpu_ldl_data cpu_ldl_be_data
|
||||||
|
# define cpu_ldq_data cpu_ldq_be_data
|
||||||
|
# define cpu_lduw_data_ra cpu_lduw_be_data_ra
|
||||||
|
# define cpu_ldsw_data_ra cpu_ldsw_be_data_ra
|
||||||
|
# define cpu_ldl_data_ra cpu_ldl_be_data_ra
|
||||||
|
# define cpu_ldq_data_ra cpu_ldq_be_data_ra
|
||||||
|
# define cpu_lduw_mmuidx_ra cpu_lduw_be_mmuidx_ra
|
||||||
|
# define cpu_ldsw_mmuidx_ra cpu_ldsw_be_mmuidx_ra
|
||||||
|
# define cpu_ldl_mmuidx_ra cpu_ldl_be_mmuidx_ra
|
||||||
|
# define cpu_ldq_mmuidx_ra cpu_ldq_be_mmuidx_ra
|
||||||
|
# define cpu_stw_data cpu_stw_be_data
|
||||||
|
# define cpu_stl_data cpu_stl_be_data
|
||||||
|
# define cpu_stq_data cpu_stq_be_data
|
||||||
|
# define cpu_stw_data_ra cpu_stw_be_data_ra
|
||||||
|
# define cpu_stl_data_ra cpu_stl_be_data_ra
|
||||||
|
# define cpu_stq_data_ra cpu_stq_be_data_ra
|
||||||
|
# define cpu_stw_mmuidx_ra cpu_stw_be_mmuidx_ra
|
||||||
|
# define cpu_stl_mmuidx_ra cpu_stl_be_mmuidx_ra
|
||||||
|
# define cpu_stq_mmuidx_ra cpu_stq_be_mmuidx_ra
|
||||||
|
#else
|
||||||
|
# define cpu_lduw_data cpu_lduw_le_data
|
||||||
|
# define cpu_ldsw_data cpu_ldsw_le_data
|
||||||
|
# define cpu_ldl_data cpu_ldl_le_data
|
||||||
|
# define cpu_ldq_data cpu_ldq_le_data
|
||||||
|
# define cpu_lduw_data_ra cpu_lduw_le_data_ra
|
||||||
|
# define cpu_ldsw_data_ra cpu_ldsw_le_data_ra
|
||||||
|
# define cpu_ldl_data_ra cpu_ldl_le_data_ra
|
||||||
|
# define cpu_ldq_data_ra cpu_ldq_le_data_ra
|
||||||
|
# define cpu_lduw_mmuidx_ra cpu_lduw_le_mmuidx_ra
|
||||||
|
# define cpu_ldsw_mmuidx_ra cpu_ldsw_le_mmuidx_ra
|
||||||
|
# define cpu_ldl_mmuidx_ra cpu_ldl_le_mmuidx_ra
|
||||||
|
# define cpu_ldq_mmuidx_ra cpu_ldq_le_mmuidx_ra
|
||||||
|
# define cpu_stw_data cpu_stw_le_data
|
||||||
|
# define cpu_stl_data cpu_stl_le_data
|
||||||
|
# define cpu_stq_data cpu_stq_le_data
|
||||||
|
# define cpu_stw_data_ra cpu_stw_le_data_ra
|
||||||
|
# define cpu_stl_data_ra cpu_stl_le_data_ra
|
||||||
|
# define cpu_stq_data_ra cpu_stq_le_data_ra
|
||||||
|
# define cpu_stw_mmuidx_ra cpu_stw_le_mmuidx_ra
|
||||||
|
# define cpu_stl_mmuidx_ra cpu_stl_le_mmuidx_ra
|
||||||
|
# define cpu_stq_mmuidx_ra cpu_stq_le_mmuidx_ra
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr addr);
|
uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr addr);
|
||||||
uint32_t cpu_lduw_code(CPUArchState *env, abi_ptr addr);
|
uint32_t cpu_lduw_code(CPUArchState *env, abi_ptr addr);
|
||||||
uint32_t cpu_ldl_code(CPUArchState *env, abi_ptr addr);
|
uint32_t cpu_ldl_code(CPUArchState *env, abi_ptr addr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue