qemu-cr16/target/arm
Alex Bennée dd77ef99aa target/arm: handle unaligned PC during tlb probe
PC alignment faults have priority over instruction aborts and we have
code to deal with this in the translation front-ends. However during
tb_lookup we can see a potentially faulting probe which doesn't get a
MemOp set. If the page isn't available this results in
EC_INSNABORT (0x20) instead of EC_PCALIGNMENT (0x22).

As there is no easy way to set the appropriate MemOp in the
instruction fetch probe path lets just detect it in
arm_cpu_tlb_fill_align() ahead of the main alignment check. We also
teach arm_deliver_fault to deliver the right syndrome for
MMU_INST_FETCH alignment issues.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3233
Tested-by: Jessica Clarke <jrtc27@jrtc27.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20251209092459.1058313-5-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
2025-12-09 16:21:56 +00:00
..
hvf target/arm: make HV_EXIT_REASON_CANCELED leave hvf_arch_vcpu_exec 2025-12-09 16:21:35 +00:00
tcg target/arm: handle unaligned PC during tlb probe 2025-12-09 16:21:56 +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