summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-07 20:48:42 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-07 20:48:42 +0000
commit6ef905f69cbeb03e8fe204d8aaa354d77f13a7d7 (patch)
treea6d479ed4f35a62d19994910400e3861307695f3
parent7f84a7291b19aa5679ef58fdad0a81df4b8a6af0 (diff)
downloadfocaccia-qemu-6ef905f69cbeb03e8fe204d8aaa354d77f13a7d7.tar.gz
focaccia-qemu-6ef905f69cbeb03e8fe204d8aaa354d77f13a7d7.zip
Fix wrong number of clean/saveable windows, match Linux startup register values
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3050 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-sparc/cpu.h1
-rw-r--r--target-sparc/translate.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 7fbc19d142..a3d762f7f9 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -89,6 +89,7 @@
 #if defined(TARGET_SPARC64)
 #define PS_IG    (1<<11)
 #define PS_MG    (1<<10)
+#define PS_RMO   (1<<7)
 #define PS_RED   (1<<5)
 #define PS_PEF   (1<<4)
 #define PS_AM    (1<<3)
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index c69ffd9afd..a2f3d5bd34 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -3315,8 +3315,10 @@ void cpu_reset(CPUSPARCState *env)
 #if defined(CONFIG_USER_ONLY)
     env->user_mode_only = 1;
 #ifdef TARGET_SPARC64
-    env->cleanwin = NWINDOWS - 1;
-    env->cansave = NWINDOWS - 1;
+    env->cleanwin = NWINDOWS - 2;
+    env->cansave = NWINDOWS - 2;
+    env->pstate = PS_RMO | PS_PEF | PS_IE;
+    env->asi = 0x82; // Primary no-fault
 #endif
 #else
     env->psret = 0;