diff options
author | Igor Kovalenko <igor.v.kovalenko@gmail.com> | 2009-07-29 01:32:23 +0400 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-08-27 21:23:36 -0500 |
commit | b9369a384b10c934daab9de64fbff80b3659d837 (patch) | |
tree | b13c7f3c2e9efe87b18ce3bc8b288eccffcbd754 | |
parent | 0ea2326a2c26f1b7b46c9225e33614daa314d6ca (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.c | 5 |
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(); + } } |