From e3358497f784cbb72e92f5f698566f7c2faacaf3 Mon Sep 17 00:00:00 2001 From: Igor Kovalenko Date: Wed, 29 Jul 2009 01:32:23 +0400 Subject: [PATCH] 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 --- target-sparc/translate.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target-sparc/translate.c b/target-sparc/translate.c index a372eca..d7894f1 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(); + } } -- 2.7.4