On 09/05/2016 04:54 AM, Rabin Vincent wrote:
From: "Edgar E. Iglesias" <ed...@axis.com>

Icount may choose to abort and recompile a TB at any load/store.  We
need to sync the CC state at these insns.

Signed-off-by: Edgar E. Iglesias <ed...@axis.com>
Signed-off-by: Rabin Vincent <rab...@axis.com>
---
 target-cris/translate.c     | 9 +++++++++
 target-cris/translate_v10.c | 3 +++
 2 files changed, 12 insertions(+)

diff --git a/target-cris/translate.c b/target-cris/translate.c
index f4a8d7d..c280e24 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -1098,6 +1098,9 @@ static void gen_load64(DisasContext *dc, TCGv_i64 dst, 
TCGv addr)
 {
     int mem_index = cpu_mmu_index(&dc->cpu->env, false);

+    /* Due to icount, we need to update the CC flags on load/stores.  */
+    cris_evaluate_flags(dc);
+

This is not the proper way to handle this. You should arrange to sync the CC flags in restore_state_to_opc. There are plenty of examples in the tree you can examine. It looks like there's plenty of room for cleanup for cris here.


r~

Reply via email to