diff options
author | Richard Henderson <rth@twiddle.net> | 2014-06-28 09:45:27 -0700 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2014-07-08 12:10:36 +0200 |
commit | a74029f6cbce43074793dc30534fb6b3aeab7584 (patch) | |
tree | 3429f63ff52f734a07b2ef27d0f1da5e709ad909 | |
parent | 4bce526ec4b88362a684fd858e0e14c83ddf0db4 (diff) |
target-ppc: Change default cpu for ppc64le-linux-user
The default, 970fx, doesn't support MSR_LE. So even though we set LE in
ppc_cpu_reset, it gets cleared again in hreg_store_msr. Error out if a
user-selected cpu model doesn't support LE.
Signed-off-by: Richard Henderson <rth@twiddle.net>
[agraf: switch to POWER7 as default for BE and LE]
Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r-- | linux-user/main.c | 8 | ||||
-rw-r--r-- | target-ppc/translate_init.c | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/linux-user/main.c b/linux-user/main.c index 900a17fa33..b453a39853 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -3901,11 +3901,11 @@ int main(int argc, char **argv, char **envp) #elif defined TARGET_OPENRISC cpu_model = "or1200"; #elif defined(TARGET_PPC) -#ifdef TARGET_PPC64 - cpu_model = "970fx"; -#else +# ifdef TARGET_PPC64 + cpu_model = "POWER7"; +# else cpu_model = "750"; -#endif +# endif #else cpu_model = "any"; #endif diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c index 2ab281069c..7b4d9beae2 100644 --- a/target-ppc/translate_init.c +++ b/target-ppc/translate_init.c @@ -9551,6 +9551,10 @@ static void ppc_cpu_reset(CPUState *s) #endif #if !defined(TARGET_WORDS_BIGENDIAN) msr |= (target_ulong)1 << MSR_LE; /* Little-endian user mode */ + if (!((env->msr_mask >> MSR_LE) & 1)) { + fprintf(stderr, "Selected CPU does not support little-endian.\n"); + exit(1); + } #endif #endif |