summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2014-06-28 09:45:27 -0700
committerAlexander Graf <agraf@suse.de>2014-07-08 12:10:36 +0200
commita74029f6cbce43074793dc30534fb6b3aeab7584 (patch)
tree3429f63ff52f734a07b2ef27d0f1da5e709ad909
parent4bce526ec4b88362a684fd858e0e14c83ddf0db4 (diff)
downloadqemu-a74029f6cbce43074793dc30534fb6b3aeab7584.tar.gz
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.c8
-rw-r--r--target-ppc/translate_init.c4
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