|
@@ -1749,7 +1749,7 @@ bool tlb_plugin_lookup(CPUState *cpu, target_ulong addr, int mmu_idx,
|
|
|
* @prot may be PAGE_READ, PAGE_WRITE, or PAGE_READ|PAGE_WRITE.
|
|
|
*/
|
|
|
static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, int size, int prot,
|
|
|
+ MemOpIdx oi, int size, int prot,
|
|
|
uintptr_t retaddr)
|
|
|
{
|
|
|
size_t mmu_idx = get_mmuidx(oi);
|
|
@@ -1850,7 +1850,7 @@ static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr,
|
|
|
*/
|
|
|
|
|
|
typedef uint64_t FullLoadHelper(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr);
|
|
|
+ MemOpIdx oi, uintptr_t retaddr);
|
|
|
|
|
|
static inline uint64_t QEMU_ALWAYS_INLINE
|
|
|
load_memop(const void *haddr, MemOp op)
|
|
@@ -1876,7 +1876,7 @@ load_memop(const void *haddr, MemOp op)
|
|
|
}
|
|
|
|
|
|
static inline uint64_t QEMU_ALWAYS_INLINE
|
|
|
-load_helper(CPUArchState *env, target_ulong addr, TCGMemOpIdx oi,
|
|
|
+load_helper(CPUArchState *env, target_ulong addr, MemOpIdx oi,
|
|
|
uintptr_t retaddr, MemOp op, bool code_read,
|
|
|
FullLoadHelper *full_load)
|
|
|
{
|
|
@@ -1991,78 +1991,78 @@ load_helper(CPUArchState *env, target_ulong addr, TCGMemOpIdx oi,
|
|
|
*/
|
|
|
|
|
|
static uint64_t full_ldub_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_UB, false, full_ldub_mmu);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_ret_ldub_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return full_ldub_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_le_lduw_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_LEUW, false,
|
|
|
full_le_lduw_mmu);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_le_lduw_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return full_le_lduw_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_be_lduw_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_BEUW, false,
|
|
|
full_be_lduw_mmu);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_be_lduw_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return full_be_lduw_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_le_ldul_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_LEUL, false,
|
|
|
full_le_ldul_mmu);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_le_ldul_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return full_le_ldul_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_be_ldul_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_BEUL, false,
|
|
|
full_be_ldul_mmu);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_be_ldul_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return full_be_ldul_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
uint64_t helper_le_ldq_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_LEQ, false,
|
|
|
helper_le_ldq_mmu);
|
|
|
}
|
|
|
|
|
|
uint64_t helper_be_ldq_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_BEQ, false,
|
|
|
helper_be_ldq_mmu);
|
|
@@ -2075,31 +2075,31 @@ uint64_t helper_be_ldq_mmu(CPUArchState *env, target_ulong addr,
|
|
|
|
|
|
|
|
|
tcg_target_ulong helper_ret_ldsb_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return (int8_t)helper_ret_ldub_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_le_ldsw_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return (int16_t)helper_le_lduw_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_be_ldsw_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return (int16_t)helper_be_lduw_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_le_ldsl_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return (int32_t)helper_le_ldul_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
|
|
|
|
tcg_target_ulong helper_be_ldsl_mmu(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return (int32_t)helper_be_ldul_mmu(env, addr, oi, retaddr);
|
|
|
}
|
|
@@ -2113,7 +2113,7 @@ static inline uint64_t cpu_load_helper(CPUArchState *env, abi_ptr addr,
|
|
|
MemOp op, FullLoadHelper *full_load)
|
|
|
{
|
|
|
uint16_t meminfo;
|
|
|
- TCGMemOpIdx oi;
|
|
|
+ MemOpIdx oi;
|
|
|
uint64_t ret;
|
|
|
|
|
|
meminfo = trace_mem_get_info(op, mmu_idx, false);
|
|
@@ -2337,7 +2337,7 @@ store_helper_unaligned(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
uintptr_t index, index2;
|
|
|
CPUTLBEntry *entry, *entry2;
|
|
|
target_ulong page2, tlb_addr, tlb_addr2;
|
|
|
- TCGMemOpIdx oi;
|
|
|
+ MemOpIdx oi;
|
|
|
size_t size2;
|
|
|
int i;
|
|
|
|
|
@@ -2404,7 +2404,7 @@ store_helper_unaligned(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
|
|
|
static inline void QEMU_ALWAYS_INLINE
|
|
|
store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr, MemOp op)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr, MemOp op)
|
|
|
{
|
|
|
uintptr_t mmu_idx = get_mmuidx(oi);
|
|
|
uintptr_t index = tlb_index(env, mmu_idx, addr);
|
|
@@ -2502,43 +2502,43 @@ store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
|
|
|
void __attribute__((noinline))
|
|
|
helper_ret_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_UB);
|
|
|
}
|
|
|
|
|
|
void helper_le_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_LEUW);
|
|
|
}
|
|
|
|
|
|
void helper_be_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_BEUW);
|
|
|
}
|
|
|
|
|
|
void helper_le_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_LEUL);
|
|
|
}
|
|
|
|
|
|
void helper_be_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_BEUL);
|
|
|
}
|
|
|
|
|
|
void helper_le_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_LEQ);
|
|
|
}
|
|
|
|
|
|
void helper_be_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
store_helper(env, addr, val, oi, retaddr, MO_BEQ);
|
|
|
}
|
|
@@ -2551,7 +2551,7 @@ static inline void QEMU_ALWAYS_INLINE
|
|
|
cpu_store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
|
|
|
int mmu_idx, uintptr_t retaddr, MemOp op)
|
|
|
{
|
|
|
- TCGMemOpIdx oi;
|
|
|
+ MemOpIdx oi;
|
|
|
uint16_t meminfo;
|
|
|
|
|
|
meminfo = trace_mem_get_info(op, mmu_idx, true);
|
|
@@ -2717,49 +2717,49 @@ void cpu_stq_le_data(CPUArchState *env, target_ulong ptr, uint64_t val)
|
|
|
/* Code access functions. */
|
|
|
|
|
|
static uint64_t full_ldub_code(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_8, true, full_ldub_code);
|
|
|
}
|
|
|
|
|
|
uint32_t cpu_ldub_code(CPUArchState *env, abi_ptr addr)
|
|
|
{
|
|
|
- TCGMemOpIdx oi = make_memop_idx(MO_UB, cpu_mmu_index(env, true));
|
|
|
+ MemOpIdx oi = make_memop_idx(MO_UB, cpu_mmu_index(env, true));
|
|
|
return full_ldub_code(env, addr, oi, 0);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_lduw_code(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_TEUW, true, full_lduw_code);
|
|
|
}
|
|
|
|
|
|
uint32_t cpu_lduw_code(CPUArchState *env, abi_ptr addr)
|
|
|
{
|
|
|
- TCGMemOpIdx oi = make_memop_idx(MO_TEUW, cpu_mmu_index(env, true));
|
|
|
+ MemOpIdx oi = make_memop_idx(MO_TEUW, cpu_mmu_index(env, true));
|
|
|
return full_lduw_code(env, addr, oi, 0);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_ldl_code(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_TEUL, true, full_ldl_code);
|
|
|
}
|
|
|
|
|
|
uint32_t cpu_ldl_code(CPUArchState *env, abi_ptr addr)
|
|
|
{
|
|
|
- TCGMemOpIdx oi = make_memop_idx(MO_TEUL, cpu_mmu_index(env, true));
|
|
|
+ MemOpIdx oi = make_memop_idx(MO_TEUL, cpu_mmu_index(env, true));
|
|
|
return full_ldl_code(env, addr, oi, 0);
|
|
|
}
|
|
|
|
|
|
static uint64_t full_ldq_code(CPUArchState *env, target_ulong addr,
|
|
|
- TCGMemOpIdx oi, uintptr_t retaddr)
|
|
|
+ MemOpIdx oi, uintptr_t retaddr)
|
|
|
{
|
|
|
return load_helper(env, addr, oi, retaddr, MO_TEQ, true, full_ldq_code);
|
|
|
}
|
|
|
|
|
|
uint64_t cpu_ldq_code(CPUArchState *env, abi_ptr addr)
|
|
|
{
|
|
|
- TCGMemOpIdx oi = make_memop_idx(MO_TEQ, cpu_mmu_index(env, true));
|
|
|
+ MemOpIdx oi = make_memop_idx(MO_TEQ, cpu_mmu_index(env, true));
|
|
|
return full_ldq_code(env, addr, oi, 0);
|
|
|
}
|