aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Kovalenko <igor.v.kovalenko@gmail.com>2009-07-29 01:32:23 +0400
committerAnthony Liguori <aliguori@us.ibm.com>2009-08-27 21:23:36 -0500
commitb9369a384b10c934daab9de64fbff80b3659d837 (patch)
treeb13c7f3c2e9efe87b18ce3bc8b288eccffcbd754
parent0ea2326a2c26f1b7b46c9225e33614daa314d6ca (diff)
sparc64 flush pending conditional evaluations before exposing cpu state
If translation block is interrupted by e.g. mmu exception we need to compute conditional flags for inclusion into saved cpu state. Otherwise after return from trap conditional instructions would use stale psr/xcc data. Signed-off-by: igor.v.kovalenko@gmail.com -- Kind regards, Igor V. Kovalenko Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-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 a372ecab1b..d7894f1644 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -4908,4 +4908,9 @@ void gen_pc_load(CPUState *env, TranslationBlock *tb,
} else {
env->npc = npc;
}
+
+ /* flush pending conditional evaluations before exposing cpu state */
+ if (CC_OP != CC_OP_FLAGS) {
+ helper_compute_psr();
+ }
}