[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Confusion regarding temporaries with branch conditional
From: |
Nikunj A Dadhania |
Subject: |
[Qemu-devel] Confusion regarding temporaries with branch conditional |
Date: |
Wed, 30 Nov 2016 12:30:09 +0530 |
User-agent: |
Notmuch/0.21 (https://notmuchmail.org) Emacs/25.0.94.1 (x86_64-redhat-linux-gnu) |
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