Each thread must have its own pc, even under TCI. Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- include/exec/exec-all.h | 2 +- tcg/tcg-common.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 125000bcf7..f933c74c44 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -544,7 +544,7 @@ void tb_set_jmp_target(TranslationBlock *tb, int n, uintptr_t addr); /* GETPC is the true target of the return instruction that we'll execute. */ #if defined(CONFIG_TCG_INTERPRETER) -extern uintptr_t tci_tb_ptr; +extern __thread uintptr_t tci_tb_ptr; # define GETPC() tci_tb_ptr #else # define GETPC() \ diff --git a/tcg/tcg-common.c b/tcg/tcg-common.c index 7e1992e79e..b183db84c7 100644 --- a/tcg/tcg-common.c +++ b/tcg/tcg-common.c @@ -26,7 +26,7 @@ #include "tcg/tcg.h" #if defined(CONFIG_TCG_INTERPRETER) -uintptr_t tci_tb_ptr; +__thread uintptr_t tci_tb_ptr; #endif TCGOpDef tcg_op_defs[] = { -- 2.25.1