aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-14 12:37:58 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-14 12:37:58 +0000
commit55e4f6644e32bfb8fe84c8b8eab95ec5984679cf (patch)
tree9c3ce1aa7e1187eec44ab3348a7decac3da7e5aa /target-sparc
parentd8e3326c8efe811d6275a1eaa19d570b1ab66927 (diff)
FPU fix (Joerg Platte)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1962 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/translate.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 8a8620fcf2..f2646684c3 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -982,6 +982,7 @@ static void disas_sparc_insn(DisasContext * dc)
{
int cc = GET_FIELD_SP(insn, 20, 21);
#if !defined(CONFIG_USER_ONLY)
+ save_state(dc);
gen_op_trap_ifnofpu();
#endif
target = GET_FIELD_SP(insn, 0, 18);
@@ -1002,6 +1003,7 @@ static void disas_sparc_insn(DisasContext * dc)
case 0x6: /* FBN+x */
{
#if !defined(CONFIG_USER_ONLY)
+ save_state(dc);
gen_op_trap_ifnofpu();
#endif
target = GET_FIELD(insn, 10, 31);
@@ -1236,6 +1238,7 @@ static void disas_sparc_insn(DisasContext * dc)
#endif
} else if (xop == 0x34) { /* FPU Operations */
#if !defined(CONFIG_USER_ONLY)
+ save_state(dc);
gen_op_trap_ifnofpu();
#endif
rs1 = GET_FIELD(insn, 13, 17);
@@ -1424,6 +1427,7 @@ static void disas_sparc_insn(DisasContext * dc)
int cond;
#endif
#if !defined(CONFIG_USER_ONLY)
+ save_state(dc);
gen_op_trap_ifnofpu();
#endif
rs1 = GET_FIELD(insn, 13, 17);
@@ -2346,6 +2350,7 @@ static void disas_sparc_insn(DisasContext * dc)
#endif
} else if (xop >= 0x20 && xop < 0x24) {
#if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64)
+ save_state(dc);
gen_op_trap_ifnofpu();
#endif
switch (xop) {