On Wed, Dec 19, 2012 at 11:45 PM, Blue Swirl <blauwir...@gmail.com> wrote: > On Tue, Dec 18, 2012 at 7:21 AM, Max Filippov <jcmvb...@gmail.com> wrote: >> Zero out tcg_ctx.gen_opc_instr_start for instructions representing the >> last guest opcode in the TB. >> >> Cc: qemu-sta...@nongnu.org >> Signed-off-by: Max Filippov <jcmvb...@gmail.com> >> --- >> target-xtensa/translate.c | 8 +++++++- >> 1 files changed, 7 insertions(+), 1 deletions(-) >> >> diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c >> index 5d8762c..d109a08 100644 >> --- a/target-xtensa/translate.c >> +++ b/target-xtensa/translate.c >> @@ -3005,7 +3005,13 @@ 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; >> + lj++; >> + while (lj <= j) { >> + tcg_ctx.gen_opc_instr_start[lj++] = 0; >> + } > > Instead of the loop, how about something like > memset(&tcg_ctx.gen_opc_instr_start[lj], 0, j - lj)?
Off by one, j - lj + 1. Wanted to keep it looking as other instances, but can do it this way too. >> + } else { >> tb->size = dc.pc - pc_start; >> tb->icount = insn_count; >> } >> -- >> 1.7.7.6 >> -- Thanks. -- Max