cpu_ldst.h: use correct guest address parameter

In the user emulation code path, tlb_vaddr_to_host erronesously passed
vaddr as the guest address to be translated, instead of addr, the parameter
which actually contained the guest address.

This resulted in incorrect addresses being used when emulating block copy
(mvc/mvpg) and block clear (xc) instructions for the s390x target.

Backports commit c2a85316902e67530da9d6548139fcce73c0cac6 from qemu
This commit is contained in:
Bobby Bingham 2018-03-01 08:56:30 -05:00 committed by Lioncash
parent 6deaf98a8b
commit d46e52d9d0
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -459,7 +459,7 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr,
int access_type, int mmu_idx)
{
#if defined(CONFIG_USER_ONLY)
return g2h(vaddr);
return g2h(addr);
#else
int index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index];