Commit 55e4f6644e32bfb8fe84c8b8eab95ec5984679cf
1 parent
d8e3326c
FPU fix (Joerg Platte)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1962 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
5 additions
and
0 deletions
target-sparc/translate.c
... | ... | @@ -982,6 +982,7 @@ static void disas_sparc_insn(DisasContext * dc) |
982 | 982 | { |
983 | 983 | int cc = GET_FIELD_SP(insn, 20, 21); |
984 | 984 | #if !defined(CONFIG_USER_ONLY) |
985 | + save_state(dc); | |
985 | 986 | gen_op_trap_ifnofpu(); |
986 | 987 | #endif |
987 | 988 | target = GET_FIELD_SP(insn, 0, 18); |
... | ... | @@ -1002,6 +1003,7 @@ static void disas_sparc_insn(DisasContext * dc) |
1002 | 1003 | case 0x6: /* FBN+x */ |
1003 | 1004 | { |
1004 | 1005 | #if !defined(CONFIG_USER_ONLY) |
1006 | + save_state(dc); | |
1005 | 1007 | gen_op_trap_ifnofpu(); |
1006 | 1008 | #endif |
1007 | 1009 | target = GET_FIELD(insn, 10, 31); |
... | ... | @@ -1236,6 +1238,7 @@ static void disas_sparc_insn(DisasContext * dc) |
1236 | 1238 | #endif |
1237 | 1239 | } else if (xop == 0x34) { /* FPU Operations */ |
1238 | 1240 | #if !defined(CONFIG_USER_ONLY) |
1241 | + save_state(dc); | |
1239 | 1242 | gen_op_trap_ifnofpu(); |
1240 | 1243 | #endif |
1241 | 1244 | rs1 = GET_FIELD(insn, 13, 17); |
... | ... | @@ -1424,6 +1427,7 @@ static void disas_sparc_insn(DisasContext * dc) |
1424 | 1427 | int cond; |
1425 | 1428 | #endif |
1426 | 1429 | #if !defined(CONFIG_USER_ONLY) |
1430 | + save_state(dc); | |
1427 | 1431 | gen_op_trap_ifnofpu(); |
1428 | 1432 | #endif |
1429 | 1433 | rs1 = GET_FIELD(insn, 13, 17); |
... | ... | @@ -2346,6 +2350,7 @@ static void disas_sparc_insn(DisasContext * dc) |
2346 | 2350 | #endif |
2347 | 2351 | } else if (xop >= 0x20 && xop < 0x24) { |
2348 | 2352 | #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64) |
2353 | + save_state(dc); | |
2349 | 2354 | gen_op_trap_ifnofpu(); |
2350 | 2355 | #endif |
2351 | 2356 | switch (xop) { | ... | ... |