]> git.ipfire.org Git - thirdparty/qemu.git/commit
target/arm: Make dummy debug registers RAZ, not NOP
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 28 Feb 2025 16:24:24 +0000 (16:24 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 7 Mar 2025 10:33:41 +0000 (10:33 +0000)
commitcc503abf4ba30ed34bbf18b3fd8eaa8046fae48b
tree122be10b3d7c156870dd5163da4cf10d272437c7
parent5be4419c573e78c21be953a4c31947f3087931a5
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: 5e8b12ffbb8c68 ("target-arm: Implement minimal DBGVCR, OSDLR_EL1, MDCCSR_EL0")
Fixes: 5dbdc4342f479d ("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
target/arm/debug_helper.c