From: Richard Henderson Date: Thu, 29 Jul 2021 23:25:00 +0000 (-1000) Subject: target/ppc: Set fault address in ppc_cpu_do_unaligned_access X-Git-Tag: v6.2.0-rc0~25^2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a7e3af132568453d9b4e31ec1ac647ef494f8765;p=thirdparty%2Fqemu.git target/ppc: Set fault address in ppc_cpu_do_unaligned_access We ought to have been recording the virtual address for reporting to the guest trap handler. Cc: qemu-ppc@nongnu.org Reviewed-by: Warner Losh Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 88a8de4b801..e568a545367 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1465,6 +1465,20 @@ void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr, { CPUPPCState *env = cs->env_ptr; + switch (env->mmu_model) { + case POWERPC_MMU_SOFT_4xx: + case POWERPC_MMU_SOFT_4xx_Z: + env->spr[SPR_40x_DEAR] = vaddr; + break; + case POWERPC_MMU_BOOKE: + case POWERPC_MMU_BOOKE206: + env->spr[SPR_BOOKE_DEAR] = vaddr; + break; + default: + env->spr[SPR_DAR] = vaddr; + break; + } + cs->exception_index = POWERPC_EXCP_ALIGN; env->error_code = 0; cpu_loop_exit_restore(cs, retaddr);