[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 2/8] linux-user: arm: set CPSR.E correctly fo
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v2 2/8] linux-user: arm: set CPSR.E correctly for BE8 mode |
Date: |
Thu, 29 May 2014 21:38:51 +0100 |
On 29 May 2014 20:46, Paolo Bonzini <address@hidden> wrote:
> Set it on startup and in signal handler frames.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> linux-user/main.c | 1 +
> linux-user/signal.c | 5 +++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/linux-user/main.c b/linux-user/main.c
> index 882186e..2a04446 100644
> --- a/linux-user/main.c
> +++ b/linux-user/main.c
> @@ -4191,6 +4191,7 @@ int main(int argc, char **argv, char **envp)
> if (EF_ARM_EABI_VERSION(info->elf_flags) >= EF_ARM_EABI_VER4
> && (info->elf_flags & EF_ARM_BE8)) {
> env->bswap_code = 1;
> + env->uncached_cpsr |= CPSR_E;
> }
> }
> #elif defined(TARGET_UNICORE32)
> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index c652829..048ffac 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -1633,6 +1633,11 @@ setup_return(CPUARMState *env, struct target_sigaction
> *ka,
> } else {
> cpsr &= ~CPSR_T;
> }
> +#ifdef TARGET_WORDS_BIGENDIAN
> + cpsr |= CPSR_E;
This is wrong for BE32, where CPSR_E doesn't exist and both code
and data accesses are big-endian.
> +#else
> + cpsr &= ~CPSR_E;
> +#endif
>
> if (ka->sa_flags & TARGET_SA_RESTORER) {
> retcode = ka->sa_restorer;
> --
> 1.9.3
thanks
-- PMM
- [Qemu-devel] [PATCH v2 0/8] target-arm/linux-user-arm: implement setend, CPSR.E, SCTLR.EE, Paolo Bonzini, 2014/05/29
- [Qemu-devel] [PATCH v2 4/8] linux-user: arm: handle CPSR.E correctly in strex emulation, Paolo Bonzini, 2014/05/29
- [Qemu-devel] [PATCH v2 3/8] linux-user: arm: pass env to get_user_code_*, Paolo Bonzini, 2014/05/29
- [Qemu-devel] [PATCH v2 6/8] target-arm: pass DisasContext to gen_aa32_ld*/st*, Paolo Bonzini, 2014/05/29
- [Qemu-devel] [PATCH v2 7/8] target-arm: introduce be8 tbflag, Paolo Bonzini, 2014/05/29
- [Qemu-devel] [PATCH v2 8/8] target-arm: implement setend, Paolo Bonzini, 2014/05/29