aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
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 /target-sparc
parent7f84a7291b19aa5679ef58fdad0a81df4b8a6af0 (diff)
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
Diffstat (limited to 'target-sparc')
-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;