diff options
| author | Richard Henderson | 2021-07-30 01:25:00 +0200 |
|---|---|---|
| committer | Richard Henderson | 2021-11-02 12:00:52 +0100 |
| commit | a7e3af132568453d9b4e31ec1ac647ef494f8765 (patch) | |
| tree | 3836f09be88cebcb0452d12d1be13fef95ccb3dd /target | |
| parent | target/ppc: Move SPR_DSISR setting to powerpc_excp (diff) | |
| download | qemu-a7e3af132568453d9b4e31ec1ac647ef494f8765.tar.gz qemu-a7e3af132568453d9b4e31ec1ac647ef494f8765.tar.xz qemu-a7e3af132568453d9b4e31ec1ac647ef494f8765.zip | |
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 <imp@bsdimp.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target')
| -rw-r--r-- | target/ppc/excp_helper.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 88a8de4b80..e568a54536 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); |
