qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-stable] [PATCH v1 2/4] target-arm: A64: Handle blr lr (fwd)


From: Edgar E. Iglesias
Subject: [Qemu-stable] [PATCH v1 2/4] target-arm: A64: Handle blr lr (fwd)
Date: Fri, 2 May 2014 00:33:14 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

----- Forwarded message from "Edgar E. Iglesias" <address@hidden> -----

From: "Edgar E. Iglesias" <address@hidden>
To: address@hidden
CC: address@hidden, address@hidden
Date: Thu, 1 May 2014 11:27:57 +1000
X-Mailer: git-send-email 1.8.3.2
Subject: [PATCH v1 2/4] target-arm: A64: Handle blr lr

From: "Edgar E. Iglesias" <address@hidden>

For linked branches, the writeback to the link register happens
conceptually after the read of the branch target register.

Signed-off-by: Edgar E. Iglesias <address@hidden>
---
 target-arm/translate-a64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c
index d86b8ff..a65677d 100644
--- a/target-arm/translate-a64.c
+++ b/target-arm/translate-a64.c
@@ -1504,6 +1504,7 @@ static void disas_uncond_b_reg(DisasContext *s, uint32_t 
insn)
         return;
     }
 
+    tcg_gen_mov_i64(cpu_pc, cpu_reg(s, rn));
     switch (opc) {
     case 0: /* BR */
     case 2: /* RET */
@@ -1527,7 +1528,6 @@ static void disas_uncond_b_reg(DisasContext *s, uint32_t 
insn)
         return;
     }
 
-    tcg_gen_mov_i64(cpu_pc, cpu_reg(s, rn));
     s->is_jmp = DISAS_JUMP;
 }
 
-- 
1.8.3.2



----- End forwarded message -----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]