qemu/tcg
Richard Henderson d59d83a1c3 tcg/aarch64: Reorg goto_tb implementation
The old implementation replaces two insns, swapping between

	b	<dest>
	nop
	br	x30
and
	adrp	x30, <dest>
	addi	x30, x30, lo12:<dest>
	br	x30

There is a race condition in which a thread could be stopped at
the PC of the second insn, and when restarted does not see the
complete address computation and branches to nowhere.

The new implemetation replaces only one insn, swapping between

	b	<dest>
	br	tmp
and
	ldr	tmp, <jmp_addr>
	br	tmp

Reported-by: hev <r@hev.cc>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2023-01-17 10:36:02 -10:00
..
aarch64 tcg/aarch64: Reorg goto_tb implementation 2023-01-17 10:36:02 -10:00
arm tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
i386 tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
loongarch64 tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
mips tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
ppc tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
riscv tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
s390x tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
sparc64 tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
tci tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
meson.build tcg: Build ffi data structures for helpers 2021-06-19 08:51:11 -07:00
optimize.c tcg: Reorg function calls 2023-01-05 11:41:29 -08:00
region.c tcg: Fix returned type in alloc_code_gen_buffer_splitwx_memfd() 2022-07-12 10:30:10 +05:30
tcg-common.c tcg/tci: Make tci_tb_ptr thread-local 2021-02-05 10:24:14 -10:00
tcg-internal.h tcg: Move ffi_cif pointer into TCGHelperInfo 2023-01-05 11:41:29 -08:00
tcg-ldst.c.inc tcg: Rename TCGMemOpIdx to MemOpIdx 2021-10-05 16:53:17 -07:00
tcg-op-gvec.c tcg/tcg-op-gvec.c: Introduce tcg_gen_gvec_4i 2022-03-02 06:51:38 +01:00
tcg-op-vec.c tcg: Pass number of arguments to tcg_emit_op() / tcg_op_insert_*() 2023-01-05 11:41:29 -08:00
tcg-op.c tcg: Add gen_tb to TCGContext 2023-01-17 10:08:51 -10:00
tcg-pool.c.inc tcg: Introduce tcg_splitwx_to_{rx,rw} 2021-01-07 05:09:41 -10:00
tcg.c tcg: Remove TCG_TARGET_HAS_direct_jump 2023-01-17 10:25:49 -10:00
tci.c tci: MAX_OPC_PARAM_IARGS is no longer used 2023-01-04 16:20:01 -08:00