qemu/target
Peter Maydell cc503abf4b target/arm: Make dummy debug registers RAZ, not NOP
In debug_helper.c we provide a few dummy versions of
debug registers:
 * DBGVCR (AArch32 only): enable bits for vector-catch
   debug events
 * MDCCINT_EL1: interrupt enable bits for the DCC
   debug communications channel
 * DBGVCR32_EL2: the AArch64 accessor for the state in
   DBGVCR

We implemented these only to stop Linux crashing on startup,
but we chose to implement them as ARM_CP_NOP. This worked
for Linux where it only cares about trying to write to these
registers, but is very confusing behaviour for anything that
wants to read the registers (perhaps for context state switches),
because the destination register will be left with whatever
random value it happened to have before the read.

Model these registers instead as RAZ.

Fixes: 5e8b12ffbb ("target-arm: Implement minimal DBGVCR, OSDLR_EL1, MDCCSR_EL0")
Fixes: 5dbdc4342f ("target-arm: Implement dummy MDCCINT_EL1")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2708
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20250228162424.1917269-1-peter.maydell@linaro.org
2025-03-07 10:33:41 +00:00
..
alpha target/alpha: Do not mix exception flags and FPCR bits 2025-03-06 15:46:18 +01:00
arm target/arm: Make dummy debug registers RAZ, not NOP 2025-03-07 10:33:41 +00:00
avr target: Set disassemble_info::endian value for little-endian targets 2025-03-06 15:46:18 +01:00
hexagon target: Set disassemble_info::endian value for little-endian targets 2025-03-06 15:46:18 +01:00
hppa target: Set disassemble_info::endian value for big-endian targets 2025-03-06 15:46:18 +01:00
i386 target/i386: Mark WHPX APIC region as little-endian 2025-03-06 15:46:18 +01:00
loongarch target: Set disassemble_info::endian value for little-endian targets 2025-03-06 15:46:18 +01:00
m68k target: Set disassemble_info::endian value for big-endian targets 2025-03-06 15:46:18 +01:00
microblaze target/microblaze: Set disassemble_info::endian value in disas_set_info 2025-03-06 15:46:18 +01:00
mips target/mips: Set disassemble_info::endian value in disas_set_info() 2025-03-06 15:46:18 +01:00
openrisc target: Set disassemble_info::endian value for big-endian targets 2025-03-06 15:46:18 +01:00
ppc target/ppc: Set disassemble_info::endian value in disas_set_info() 2025-03-06 15:46:18 +01:00
riscv Generic CPUs / accelerators patch queue 2025-03-07 07:39:49 +08:00
rx target: Set disassemble_info::endian value for little-endian targets 2025-03-06 15:46:18 +01:00
s390x target: Set disassemble_info::endian value for big-endian targets 2025-03-06 15:46:18 +01:00
sh4 target/sh4: Set disassemble_info::endian value in disas_set_info() 2025-03-06 15:46:18 +01:00
sparc Generic CPUs / accelerators patch queue 2025-03-07 07:39:49 +08:00
tricore target/tricore: Ensure not being build on user emulation 2025-03-06 15:46:18 +01:00
xtensa target/xtensa: Finalize config in xtensa_register_core() 2025-03-06 15:46:18 +01: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