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;