mirror of https://github.com/proxmox/mirror_qemu
accel/tcg: Report unaligned load/store for user-only
Use the new cpu_loop_exit_sigbus for cpu_mmu_lookup. Reviewed-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>master
parent
fce3f47430
commit
9395cd0a38
|
@ -218,9 +218,14 @@ static void validate_memop(MemOpIdx oi, MemOp expected)
|
||||||
static void *cpu_mmu_lookup(CPUArchState *env, target_ulong addr,
|
static void *cpu_mmu_lookup(CPUArchState *env, target_ulong addr,
|
||||||
MemOpIdx oi, uintptr_t ra, MMUAccessType type)
|
MemOpIdx oi, uintptr_t ra, MMUAccessType type)
|
||||||
{
|
{
|
||||||
|
MemOp mop = get_memop(oi);
|
||||||
|
int a_bits = get_alignment_bits(mop);
|
||||||
void *ret;
|
void *ret;
|
||||||
|
|
||||||
/* TODO: Enforce guest required alignment. */
|
/* Enforce guest required alignment. */
|
||||||
|
if (unlikely(addr & ((1 << a_bits) - 1))) {
|
||||||
|
cpu_loop_exit_sigbus(env_cpu(env), addr, type, ra);
|
||||||
|
}
|
||||||
|
|
||||||
ret = g2h(env_cpu(env), addr);
|
ret = g2h(env_cpu(env), addr);
|
||||||
set_helper_retaddr(ra);
|
set_helper_retaddr(ra);
|
||||||
|
|
Loading…
Reference in New Issue