aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/cpu.h4
-rw-r--r--target-sparc/translate.c1
2 files changed, 3 insertions, 2 deletions
diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 60189a6096..3e8d71c204 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -238,8 +238,8 @@ typedef struct CPUSPARCState {
(0 << 24) | (MAXTL << 8) | (NWINDOWS - 1))
#else
#define GET_FSR32(env) (env->fsr)
-#define PUT_FSR32(env, val) do { uint32_t _tmp = val; \
- env->fsr = _tmp & 0xcfc1ffff; \
+#define PUT_FSR32(env, val) do { uint32_t _tmp = val; \
+ env->fsr = (_tmp & 0xcfc1ffff) | (env->fsr & 0x000e0000); \
} while (0)
#endif
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 7486c277bb..d1de266f6f 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -2754,6 +2754,7 @@ void cpu_reset(CPUSPARCState *env)
env->version = GET_VER(env);
env->pc = 0x1fff0000000ULL;
#else
+ env->fsr = 4 << 17; /* FPU version 4 (Meiko) */
env->mmuregs[0] = (0x04 << 24); /* Impl 0, ver 4, MMU disabled */
env->pc = 0xffd00000;
#endif