qemu-cr16/target/arm
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
..
hvf accel/hvf: Trace prefetch abort 2025-10-31 16:26:46 +00:00
tcg target/arm: Fix assert on BRA. 2025-12-01 09:36:40 +00:00
arch_dump.c target/arm/arch_dump: remove TARGET_AARCH64 conditionals 2025-05-14 15:12:40 +01:00
arm-powerctl.c target/arm: Convert power control DPRINTF() uses to trace events 2025-09-26 11:08:56 +01:00
arm-powerctl.h
arm-qmp-cmds.c target/qmp: Use target_cpu_type() 2025-07-15 02:56:39 -04:00
common-semi-target.c include/semihosting/common-semi: extract common_semi API 2025-09-26 09:55:19 +01:00
cortex-regs.c target/arm: Saturate L2CTLR_EL1 core count field rather than overflowing 2023-05-18 11:39:33 +01:00
cpregs-gcs.c target/arm: Implement GCSSS2 2025-10-10 13:19:10 +01:00
cpregs-pmu.c target/arm: Trap PMCR when MDCR_EL2.TPMCR is set 2025-08-30 16:37:22 +01:00
cpregs.h target/arm: Implement MAIR2_ELx and AMAIR2_ELx 2025-10-23 13:12:50 +01:00
cpu-features.h target/arm: Add isar feature test for FEAT_AIE 2025-10-23 13:12:49 +01:00
cpu-irq.c target-arm: remove uses of cpu_interrupt() for user-mode emulation 2025-09-17 19:00:55 +02:00
cpu-param.h accel/tcg: Move TARGET_TAGGED_ADDRESSES to TCGCPUOps.untagged_addr 2025-05-05 09:24:10 -07:00
cpu-qom.h target/arm: Remove TYPE_AARCH64_CPU 2025-05-14 14:29:46 +01:00
cpu-sysregs.h arm/cpu: Add sysreg definitions in cpu-sysregs.h 2025-07-01 15:08:26 +01:00
cpu-sysregs.h.inc target/arm: Implement ID_AA64PFR2_EL1 2025-09-26 13:43:33 +01:00
cpu.c target/arm: Rename init_cpreg_list() -> arm_init_cpreg_list() 2025-10-31 16:26:46 +00:00
cpu.h target/arm: Implement org.gnu.gdb.aarch64.tls XML feature in gdbstub 2025-10-23 13:35:04 +01:00
cpu32-stubs.c target/arm/cpu: remove TARGET_AARCH64 in arm_cpu_finalize_features 2025-05-14 15:12:40 +01:00
cpu64.c target/arm/cpu64: remove duplicate include 2025-11-14 13:04:08 +00:00
debug_helper.c target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat 2025-08-01 16:48:50 +01:00
el2-stubs.c target-arm: remove uses of cpu_interrupt() for user-mode emulation 2025-09-17 19:00:55 +02:00
gdbstub.c target/arm: Implement org.gnu.gdb.aarch64.tls XML feature in gdbstub 2025-10-23 13:35:04 +01:00
gdbstub64.c target/arm: Implement org.gnu.gdb.aarch64.tls XML feature in gdbstub 2025-10-23 13:35:04 +01:00
gtimer.h target/arm: Document the architectural names of our GTIMERs 2025-03-07 10:08:21 +00:00
helper.c target/arm: Rename init_cpreg_list() -> arm_init_cpreg_list() 2025-10-31 16:26:46 +00:00
helper.h target/arm/helper: extract common helpers 2025-05-14 15:12:40 +01:00
hvf-stub.c target/arm/hvf_arm: Avoid using poisoned CONFIG_HVF definition 2025-05-29 17:45:10 +01:00
hvf_arm.h target/arm/hvf: Include missing 'cpu-qom.h' header 2025-05-29 17:45:12 +01:00
hyp_gdbstub.c target/arm: Replace target_ulong -> vaddr for HWBreakpoint 2025-05-14 15:12:40 +01:00
idau.h
internals.h target/arm: Rename init_cpreg_list() -> arm_init_cpreg_list() 2025-10-31 16:26:46 +00:00
Kconfig kconfig: express dependency of individual boards on libfdt 2024-05-10 15:45:15 +02:00
kvm-consts.h target/arm: Remove cp argument to ENCODE_AA64_CP_REG 2025-09-25 15:42:34 +01:00
kvm-stub.c target/arm/kvm: Add helper to detect EL2 when using KVM 2025-07-10 11:41:02 +01:00
kvm.c accel/kvm: Introduce KvmPutState enum 2025-10-14 11:03:59 +02:00
kvm_arm.h target/arm: Provide always-false kvm_arm_*_supported() stubs for usermode 2025-07-21 10:07:53 +01:00
machine.c hw/arm: Add DEFINE_MACHINE_ARM() / DEFINE_MACHINE_AARCH64() macros 2025-10-29 19:15:46 +01:00
meson.build target/arm: Add GCS cpregs 2025-10-10 10:42:12 +01:00
mmuidx-internal.h target/arm: Introduce regime_to_gcs 2025-10-10 10:42:12 +01:00
mmuidx.c target/arm: Introduce regime_to_gcs 2025-10-10 10:42:12 +01:00
mmuidx.h target/arm: Introduce mmu indexes for GCS 2025-10-10 10:42:12 +01:00
multiprocessing.h target/arm: Expose arm_cpu_mp_affinity() in 'multiprocessing.h' header 2024-01-26 11:30:48 +00:00
ptw.c accel/tcg: Introduce and use MO_ALIGN_TLB_ONLY 2025-10-31 12:49:46 +01:00
syndrome.h target/arm: Add syndrome data for EC_GCS 2025-10-10 13:19:09 +01:00
tcg-stubs.c target/arm: Expand syndrome parameter to raise_exception* 2025-10-10 10:42:12 +01:00
trace-events target/arm: Share ARM_PSCI_CALL trace event between TCG and HVF 2025-10-31 16:26:46 +00:00
trace.h
vfp_fpscr.c target/arm: Rename vfp_helper.c to vfp_fpscr.c 2025-02-25 15:32:58 +00:00