projects
/
sdk
/
emulator
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
655feed
)
Sparc: fix PC/NPC during FPU traps
author
Blue Swirl
<blauwirbel@gmail.com>
Sat, 17 Apr 2010 16:25:04 +0000
(16:25 +0000)
committer
Blue Swirl
<blauwirbel@gmail.com>
Sat, 17 Apr 2010 16:25:04 +0000
(16:25 +0000)
All FPU instructions can trap, so save PC/NPC state before
executing them.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
target-sparc/translate.c
patch
|
blob
|
history
diff --git
a/target-sparc/translate.c
b/target-sparc/translate.c
index
2c07385
..
addb1e1
100644
(file)
--- a/
target-sparc/translate.c
+++ b/
target-sparc/translate.c
@@
-2155,6
+2155,7
@@
static void disas_sparc_insn(DisasContext * dc)
rs1 = GET_FIELD(insn, 13, 17);
rs2 = GET_FIELD(insn, 27, 31);
xop = GET_FIELD(insn, 18, 26);
+ save_state(dc, cpu_cond);
switch (xop) {
case 0x1: /* fmovs */
tcg_gen_mov_i32(cpu_fpr[rd], cpu_fpr[rs2]);
@@
-2468,6
+2469,7
@@
static void disas_sparc_insn(DisasContext * dc)
rs1 = GET_FIELD(insn, 13, 17);
rs2 = GET_FIELD(insn, 27, 31);
xop = GET_FIELD(insn, 18, 26);
+ save_state(dc, cpu_cond);
#ifdef TARGET_SPARC64
if ((xop & 0x11f) == 0x005) { // V9 fmovsr
int l1;