qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 11/66] target/ppc: Implement do_unaligned_access for user-


From: Peter Maydell
Subject: Re: [PATCH v3 11/66] target/ppc: Implement do_unaligned_access for user-only
Date: Thu, 19 Aug 2021 16:44:06 +0100

On Wed, 18 Aug 2021 at 20:23, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> For simplicity on the linux-user side, always use SPR_DAR.
>
> Cc: qemu-ppc@nongnu.org
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  linux-user/ppc/cpu_loop.c | 2 +-
>  target/ppc/cpu_init.c     | 2 +-
>  target/ppc/excp_helper.c  | 2 ++
>  3 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/linux-user/ppc/cpu_loop.c b/linux-user/ppc/cpu_loop.c
> index fa91ea0eed..d72d30248b 100644
> --- a/linux-user/ppc/cpu_loop.c
> +++ b/linux-user/ppc/cpu_loop.c
> @@ -165,7 +165,7 @@ void cpu_loop(CPUPPCState *env)
>              info.si_signo = TARGET_SIGBUS;
>              info.si_errno = 0;
>              info.si_code = TARGET_BUS_ADRALN;
> -            info._sifields._sigfault._addr = env->nip;
> +            info._sifields._sigfault._addr = env->spr[SPR_DAR];
>              queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info);
>              break;
>          case POWERPC_EXCP_PROGRAM:  /* Program exception                     
> */
> diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
> index 505a0ed6ac..84fb6bbb83 100644
> --- a/target/ppc/cpu_init.c
> +++ b/target/ppc/cpu_init.c
> @@ -9014,12 +9014,12 @@ static const struct TCGCPUOps ppc_tcg_ops = {
>    .initialize = ppc_translate_init,
>    .cpu_exec_interrupt = ppc_cpu_exec_interrupt,
>    .tlb_fill = ppc_cpu_tlb_fill,
> +  .do_unaligned_access = ppc_cpu_do_unaligned_access,
>
>  #ifndef CONFIG_USER_ONLY
>    .do_interrupt = ppc_cpu_do_interrupt,
>    .cpu_exec_enter = ppc_cpu_exec_enter,
>    .cpu_exec_exit = ppc_cpu_exec_exit,
> -  .do_unaligned_access = ppc_cpu_do_unaligned_access,
>  #endif /* !CONFIG_USER_ONLY */
>  };
>  #endif /* CONFIG_TCG */
> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
> index d7743704ac..08cc474340 100644
> --- a/target/ppc/excp_helper.c
> +++ b/target/ppc/excp_helper.c
> @@ -1505,6 +1505,7 @@ void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr 
> vaddr,
>      CPUPPCState *env = cs->env_ptr;
>
>      switch (env->mmu_model) {

If you add a comment giving the same info the commit message has, eg:

       /*
        * In user-only mode we always set SPR_DAR regardless of CPU type
        * so that the linux-user/ppc code only needs to look in one place
        */

then
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]