target/sparc: Use cpu_ld*_code_mmu

This passes on the memop as given as argument to
helper_ld_asi to the ultimate load primitive.

Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2023-05-02 16:14:19 +01:00
parent 316b6783f1
commit 60abd45224
1 changed files with 6 additions and 4 deletions

View File

@ -593,6 +593,7 @@ uint64_t helper_ld_asi(CPUSPARCState *env, target_ulong addr,
#if defined(DEBUG_MXCC) || defined(DEBUG_ASI) #if defined(DEBUG_MXCC) || defined(DEBUG_ASI)
uint32_t last_addr = addr; uint32_t last_addr = addr;
#endif #endif
MemOpIdx oi;
do_check_align(env, addr, size - 1, GETPC()); do_check_align(env, addr, size - 1, GETPC());
switch (asi) { switch (asi) {
@ -692,19 +693,20 @@ uint64_t helper_ld_asi(CPUSPARCState *env, target_ulong addr,
case ASI_M_IODIAG: /* Turbosparc IOTLB Diagnostic */ case ASI_M_IODIAG: /* Turbosparc IOTLB Diagnostic */
break; break;
case ASI_KERNELTXT: /* Supervisor code access */ case ASI_KERNELTXT: /* Supervisor code access */
oi = make_memop_idx(memop, cpu_mmu_index(env, true));
switch (size) { switch (size) {
case 1: case 1:
ret = cpu_ldub_code(env, addr); ret = cpu_ldb_code_mmu(env, addr, oi, GETPC());
break; break;
case 2: case 2:
ret = cpu_lduw_code(env, addr); ret = cpu_ldw_code_mmu(env, addr, oi, GETPC());
break; break;
default: default:
case 4: case 4:
ret = cpu_ldl_code(env, addr); ret = cpu_ldl_code_mmu(env, addr, oi, GETPC());
break; break;
case 8: case 8:
ret = cpu_ldq_code(env, addr); ret = cpu_ldq_code_mmu(env, addr, oi, GETPC());
break; break;
} }
break; break;