[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 5/9] target-cris: sync CC state at load/stores.
From: |
Rabin Vincent |
Subject: |
[Qemu-devel] [PATCH 5/9] target-cris: sync CC state at load/stores. |
Date: |
Mon, 5 Sep 2016 13:54:08 +0200 |
From: "Edgar E. Iglesias" <address@hidden>
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 <address@hidden>
Signed-off-by: Rabin Vincent <address@hidden>
---
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);
+
/* If we get a fault on a delayslot we must keep the jmp state in
the cpu-state to be able to re-execute the jmp. */
if (dc->delayed_branch == 1) {
@@ -1112,6 +1115,9 @@ static void gen_load(DisasContext *dc, TCGv 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);
+
/* If we get a fault on a delayslot we must keep the jmp state in
the cpu-state to be able to re-execute the jmp. */
if (dc->delayed_branch == 1) {
@@ -1127,6 +1133,9 @@ static void gen_store (DisasContext *dc, TCGv addr, TCGv
val,
{
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);
+
/* If we get a fault on a delayslot we must keep the jmp state in
the cpu-state to be able to re-execute the jmp. */
if (dc->delayed_branch == 1) {
diff --git a/target-cris/translate_v10.c b/target-cris/translate_v10.c
index 4707a18..a3da425 100644
--- a/target-cris/translate_v10.c
+++ b/target-cris/translate_v10.c
@@ -99,6 +99,9 @@ static void gen_store_v10(DisasContext *dc, TCGv addr, TCGv
val,
{
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);
+
/* If we get a fault on a delayslot we must keep the jmp state in
the cpu-state to be able to re-execute the jmp. */
if (dc->delayed_branch == 1) {
--
2.1.4