cputlb: Do unaligned store recursion to outermost function

This is less tricky than for loads, because we always fall
back to single byte stores to implement unaligned stores.

Backports commit 4601f8d10d7628bcaf2a8179af36e04b42879e91 from qemu
This commit is contained in:
Richard Henderson 2019-05-14 07:45:11 -04:00 committed by Lioncash
parent bcab6f1719
commit 9a02741c13
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -1175,9 +1175,9 @@ tcg_target_ulong helper_be_ldsl_mmu(CPUArchState *env, target_ulong addr,
* Store Helpers
*/
static void store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
TCGMemOpIdx oi, uintptr_t retaddr, size_t size,
bool big_endian)
static inline void __attribute__((always_inline))
store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
TCGMemOpIdx oi, uintptr_t retaddr, size_t size, bool big_endian)
{
uintptr_t mmu_idx = get_mmuidx(oi);
uintptr_t index = tlb_index(env, mmu_idx, addr);
@ -1338,7 +1338,7 @@ static void store_helper(CPUArchState *env, target_ulong addr, uint64_t val,
/* Little-endian extract. */
val8 = val >> (i * 8);
}
store_helper(env, addr + i, val8, oi, retaddr, 1, big_endian);
helper_ret_stb_mmu(env, addr + i, val8, oi, retaddr);
}
return;
}