Hi, I was writing one instruction and hit following issue:
[snip]/qemu/tcg/tcg.c:2039: tcg fatal error qemu-ppc64le: [snip]/qemu/translate-all.c:175: tb_lock: Assertion `!have_tb_lock' failed. Segmentation fault (core dumped) Debugging deeper found that its something to do with the variable type: TCGv nb = tcg_temp_new(); tcg_gen_andi_tl(nb, cpu_gpr[rB(ctx->opcode)], 0xFF); tcg_gen_brcondi_tl(TCG_COND_EQ, nb, 0, l1); [ Do something here] gen_set_label(l1); tcg_temp_free(nb); If I change the variable as "local temporary", the code works fine: TCGv nb = tcg_temp_local_new(); tcg_gen_andi_tl(nb, cpu_gpr[rB(ctx->opcode)], 0xFF); tcg_gen_brcondi_tl(TCG_COND_EQ, nb, 0, l1); [ Do something here] gen_set_label(l1); tcg_temp_free(nb); I see lot of code that is using temporaries for similar operations, example target-ppc/translate.c:gen_check_align(). How is that working, is this a bug there as well? Regards, Nikunj