On 29 May 2014 20:46, Paolo Bonzini <pbonz...@redhat.com> wrote: > Set it on startup and in signal handler frames. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > 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