aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-24 13:24:09 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-24 13:24:09 +0000
commit3e736bf4b42fdb19920d348dcd8a1e7c0a0233ca (patch)
tree5642c9ec6cf7c3c5bda01866c8be149337b59b00 /target-sparc
parente32f879d1b5cbde3c996d6db5e15e487ae3064a5 (diff)
Upgrade Sparc FPU version (based on patch by Aurelien Jarno)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2532 c046a42c-6fe2-441c-8c8c-71466251a162
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