You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/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>
1 day ago
..
hvf accel/hvf: Trace prefetch abort 1 month ago
tcg target/arm: Fix assert on BRA. 1 day ago
Kconfig kconfig: express dependency of individual boards on libfdt 2 years ago
arch_dump.c target/arm/arch_dump: remove TARGET_AARCH64 conditionals 7 months ago
arm-powerctl.c target/arm: Convert power control DPRINTF() uses to trace events 2 months ago
arm-powerctl.h target/arm/arm-powerctl: Add new arm_set_cpu_on_and_reset() 7 years ago
arm-qmp-cmds.c target/qmp: Use target_cpu_type() 5 months ago
common-semi-target.c include/semihosting/common-semi: extract common_semi API 2 months ago
cortex-regs.c target/arm: Saturate L2CTLR_EL1 core count field rather than overflowing 3 years ago
cpregs-gcs.c target/arm: Implement GCSSS2 2 months ago
cpregs-pmu.c target/arm: Trap PMCR when MDCR_EL2.TPMCR is set 3 months ago
cpregs.h target/arm: Implement MAIR2_ELx and AMAIR2_ELx 1 month ago
cpu-features.h target/arm: Add isar feature test for FEAT_AIE 1 month ago
cpu-irq.c target-arm: remove uses of cpu_interrupt() for user-mode emulation 3 months ago
cpu-param.h accel/tcg: Move TARGET_TAGGED_ADDRESSES to TCGCPUOps.untagged_addr 7 months ago
cpu-qom.h target/arm: Remove TYPE_AARCH64_CPU 7 months ago
cpu-sysregs.h arm/cpu: Add sysreg definitions in cpu-sysregs.h 5 months ago
cpu-sysregs.h.inc target/arm: Implement ID_AA64PFR2_EL1 2 months ago
cpu.c target/arm: Rename init_cpreg_list() -> arm_init_cpreg_list() 1 month ago
cpu.h target/arm: Implement org.gnu.gdb.aarch64.tls XML feature in gdbstub 1 month ago
cpu32-stubs.c target/arm/cpu: remove TARGET_AARCH64 in arm_cpu_finalize_features 7 months ago
cpu64.c target/arm/cpu64: remove duplicate include 3 weeks ago
debug_helper.c target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat 4 months ago
el2-stubs.c target-arm: remove uses of cpu_interrupt() for user-mode emulation 3 months ago
gdbstub.c target/arm: Implement org.gnu.gdb.aarch64.tls XML feature in gdbstub 1 month ago
gdbstub64.c target/arm: Implement org.gnu.gdb.aarch64.tls XML feature in gdbstub 1 month ago
gtimer.h target/arm: Document the architectural names of our GTIMERs 9 months ago
helper.c target/arm: Rename init_cpreg_list() -> arm_init_cpreg_list() 1 month ago
helper.h target/arm/helper: extract common helpers 7 months ago
hvf-stub.c target/arm/hvf_arm: Avoid using poisoned CONFIG_HVF definition 6 months ago
hvf_arm.h target/arm/hvf: Include missing 'cpu-qom.h' header 6 months ago
hyp_gdbstub.c target/arm: Replace target_ulong -> vaddr for HWBreakpoint 7 months ago
idau.h Use DECLARE_*CHECKER* macros 5 years ago
internals.h target/arm: Rename init_cpreg_list() -> arm_init_cpreg_list() 1 month ago
kvm-consts.h target/arm: Remove cp argument to ENCODE_AA64_CP_REG 2 months ago
kvm-stub.c target/arm/kvm: Add helper to detect EL2 when using KVM 5 months ago
kvm.c accel/kvm: Introduce KvmPutState enum 2 months ago
kvm_arm.h target/arm: Provide always-false kvm_arm_*_supported() stubs for usermode 4 months ago
machine.c hw/arm: Add DEFINE_MACHINE_ARM() / DEFINE_MACHINE_AARCH64() macros 1 month ago
meson.build target/arm: Add GCS cpregs 2 months ago
mmuidx-internal.h target/arm: Introduce regime_to_gcs 2 months ago
mmuidx.c target/arm: Introduce regime_to_gcs 2 months ago
mmuidx.h target/arm: Introduce mmu indexes for GCS 2 months ago
multiprocessing.h target/arm: Expose arm_cpu_mp_affinity() in 'multiprocessing.h' header 2 years ago
ptw.c accel/tcg: Introduce and use MO_ALIGN_TLB_ONLY 1 month ago
syndrome.h target/arm: Add syndrome data for EC_GCS 2 months ago
tcg-stubs.c target/arm: Expand syndrome parameter to raise_exception* 2 months ago
trace-events target/arm: Share ARM_PSCI_CALL trace event between TCG and HVF 1 month ago
trace.h trace: switch position of headers to what Meson requires 5 years ago
vfp_fpscr.c target/arm: Rename vfp_helper.c to vfp_fpscr.c 9 months ago