Patchwork [17/21] target-xtensa: fix search_pc for the last TB opcode

login
register
mail settings
Submitter Michael Roth
Date Jan. 16, 2013, 4:49 p.m.
Message ID <1358354963-9070-18-git-send-email-mdroth@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/213003/
State New
Headers show

Comments

Michael Roth - Jan. 16, 2013, 4:49 p.m.
From: Max Filippov <jcmvbkbc@gmail.com>

Zero out tcg_ctx.gen_opc_instr_start for instructions representing the
last guest opcode in the TB.

Cc: qemu-stable@nongnu.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit 36f25d2537c40c6c47f4abee5d31a24863d1adf7)

*modified to use older global version of gen_opc_instr_start

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target-xtensa/translate.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Patch

diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c
index e5a3f49..87f26c2 100644
--- a/target-xtensa/translate.c
+++ b/target-xtensa/translate.c
@@ -2962,7 +2962,11 @@  static void gen_intermediate_code_internal(
     gen_icount_end(tb, insn_count);
     *tcg_ctx.gen_opc_ptr = INDEX_op_end;
 
-    if (!search_pc) {
+    if (search_pc) {
+        j = tcg_ctx.gen_opc_ptr - tcg_ctx.gen_opc_buf;
+        memset(gen_opc_instr_start + lj + 1, 0,
+                (j - lj) * sizeof(gen_opc_instr_start[0]));
+    } else {
         tb->size = dc.pc - pc_start;
         tb->icount = insn_count;
     }