qemu-cr16/target
Harald van Dijk 7248dab3c9 target/arm: Fix assert on BRA.
trans_BRA does

    gen_a64_set_pc(s, dst);
    set_btype_for_br(s, a->rn);

gen_a64_set_pc does

    s->pc_save = -1;

set_btype_for_br (if aa64_bti is enabled and the register is not x16 or
x17) does

    gen_pc_plus_diff(s, pc, 0);

gen_pc_plus_diff does

    assert(s->pc_save != -1);

Hence, this assert is getting hit. We need to call set_btype_for_br
before gen_a64_set_pc, and there is nothing in set_btype_for_br that
depends on gen_a64_set_pc having already been called, so this commit
simply swaps the calls.

(The commit message for 64678fc45d says that set_brtype_for_br()
must be "moved after" get_a64_set_pc(), but this is a mistake in
the commit message -- the actual changes in that commit move
set_brtype_for_br() *before* get_a64_set_pc() and this is necessary
to avoid the assert.)

Cc: qemu-stable@nongnu.org
Fixes: 64678fc45d ("target/arm: Fix BTI versus CF_PCREL")
Signed-off-by: Harald van Dijk <hdijk@accesssoftek.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: d2265ebb-84bc-41b7-a2d7-05dc9a5a2055@accesssoftek.com
[PMM: added note about 64678fc45d to commit message]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2025-12-01 09:36:40 +00:00
..
alpha target/alpha: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
arm target/arm: Fix assert on BRA. 2025-12-01 09:36:40 +00:00
avr target/avr: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
hexagon target/hexagon: Only indent on linux 2025-10-17 13:45:46 -07:00
hppa target/hppa: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
i386 target/i386: fix stack size when delivering real mode interrupts 2025-11-17 09:49:26 +01:00
loongarch loongarch queue 2025-10-31 12:55:44 +01:00
m68k target/m68k: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
microblaze maintainer updates for 10.2 2025-10-30 09:25:15 +01:00
mips target/mips: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
openrisc target/openrisc: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
ppc ppc queue for 10.2 2025-11-01 09:39:10 +01:00
riscv target/riscv: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
rx rx: cpu: fix interrupts check in rx_cpu_do_interrupt() 2025-11-03 14:15:57 +01:00
s390x target/s390x: Use address generation for register branch targets 2025-11-03 08:27:59 +01:00
sh4 target/sh4: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
sparc target/sparc: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
tricore target/tricore: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
xtensa target/xtensa: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
Kconfig target/cris: Remove the deprecated CRIS target 2024-09-13 20:11:13 +02:00
meson.build target/cris: Remove the deprecated CRIS target 2024-09-13 20:11:13 +02:00