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; +#else + cpsr &= ~CPSR_E; +#endif if (ka->sa_flags & TARGET_SA_RESTORER) { retcode = ka->sa_restorer; -- 1.9.3