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,6 +982,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 982 | { | 982 | { |
| 983 | int cc = GET_FIELD_SP(insn, 20, 21); | 983 | int cc = GET_FIELD_SP(insn, 20, 21); |
| 984 | #if !defined(CONFIG_USER_ONLY) | 984 | #if !defined(CONFIG_USER_ONLY) |
| 985 | + save_state(dc); | ||
| 985 | gen_op_trap_ifnofpu(); | 986 | gen_op_trap_ifnofpu(); |
| 986 | #endif | 987 | #endif |
| 987 | target = GET_FIELD_SP(insn, 0, 18); | 988 | target = GET_FIELD_SP(insn, 0, 18); |
| @@ -1002,6 +1003,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -1002,6 +1003,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 1002 | case 0x6: /* FBN+x */ | 1003 | case 0x6: /* FBN+x */ |
| 1003 | { | 1004 | { |
| 1004 | #if !defined(CONFIG_USER_ONLY) | 1005 | #if !defined(CONFIG_USER_ONLY) |
| 1006 | + save_state(dc); | ||
| 1005 | gen_op_trap_ifnofpu(); | 1007 | gen_op_trap_ifnofpu(); |
| 1006 | #endif | 1008 | #endif |
| 1007 | target = GET_FIELD(insn, 10, 31); | 1009 | target = GET_FIELD(insn, 10, 31); |
| @@ -1236,6 +1238,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -1236,6 +1238,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 1236 | #endif | 1238 | #endif |
| 1237 | } else if (xop == 0x34) { /* FPU Operations */ | 1239 | } else if (xop == 0x34) { /* FPU Operations */ |
| 1238 | #if !defined(CONFIG_USER_ONLY) | 1240 | #if !defined(CONFIG_USER_ONLY) |
| 1241 | + save_state(dc); | ||
| 1239 | gen_op_trap_ifnofpu(); | 1242 | gen_op_trap_ifnofpu(); |
| 1240 | #endif | 1243 | #endif |
| 1241 | rs1 = GET_FIELD(insn, 13, 17); | 1244 | rs1 = GET_FIELD(insn, 13, 17); |
| @@ -1424,6 +1427,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -1424,6 +1427,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 1424 | int cond; | 1427 | int cond; |
| 1425 | #endif | 1428 | #endif |
| 1426 | #if !defined(CONFIG_USER_ONLY) | 1429 | #if !defined(CONFIG_USER_ONLY) |
| 1430 | + save_state(dc); | ||
| 1427 | gen_op_trap_ifnofpu(); | 1431 | gen_op_trap_ifnofpu(); |
| 1428 | #endif | 1432 | #endif |
| 1429 | rs1 = GET_FIELD(insn, 13, 17); | 1433 | rs1 = GET_FIELD(insn, 13, 17); |
| @@ -2346,6 +2350,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -2346,6 +2350,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 2346 | #endif | 2350 | #endif |
| 2347 | } else if (xop >= 0x20 && xop < 0x24) { | 2351 | } else if (xop >= 0x20 && xop < 0x24) { |
| 2348 | #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64) | 2352 | #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64) |
| 2353 | + save_state(dc); | ||
| 2349 | gen_op_trap_ifnofpu(); | 2354 | gen_op_trap_ifnofpu(); |
| 2350 | #endif | 2355 | #endif |
| 2351 | switch (xop) { | 2356 | switch (xop) { |