qemu-cr16/target
Ilya Leoshkevich fc976a67de target/s390x: Use address generation for register branch targets
Indirect branches to addresses taken from registers go through address
generation, e.g., for BRANCH ON CONDITION Principles of Operation says:

    In the RR format, the contents of general register R2 are used to
    generate the branch address

QEMU uses r2_nz handler for the respective register operands. Currently
it does not zero out extra bits in 24- and 31-bit addressing modes as
required by address generation. The very frequently used
s390x_tr_init_disas_context() function has a workaround for this,
but the code for saving an old PSW during an interrupt does not.

Add the missing masking to r2_nz. Enforce PSW validity by replacing the
workaround with an assertion.

Reported-by: Thomas Weißschuh <linux@weissschuh.net>
Reported-by: Heiko Carstens <hca@linux.ibm.com>
Link: https://lore.kernel.org/lkml/ab3131a2-c42a-47ff-bf03-e9f68ac053c0@t-8ch.de/
Cc: qemu-stable@nongnu.org
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Tested-by: Thomas Weißschuh <linux@weissschuh.net>
Message-ID: <20251016175954.41153-4-iii@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2025-11-03 08:27:59 +01:00
..
alpha target/alpha: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
arm target-arm queue: 2025-11-01 10:52:48 +01:00
avr target/avr: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
hexagon target/hexagon: Only indent on linux 2025-10-17 13:45:46 -07:00
hppa target/hppa: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
i386 accel/hvf: Guard hv_vcpu_run() between cpu_exec_start/end() calls 2025-10-31 16:26:46 +00:00
loongarch loongarch queue 2025-10-31 12:55:44 +01:00
m68k target/m68k: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
microblaze maintainer updates for 10.2 2025-10-30 09:25:15 +01:00
mips target/mips: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
openrisc target/openrisc: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
ppc ppc queue for 10.2 2025-11-01 09:39:10 +01:00
riscv target/riscv: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
rx target/rx: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
s390x target/s390x: Use address generation for register branch targets 2025-11-03 08:27:59 +01:00
sh4 target/sh4: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
sparc target/sparc: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
tricore target/tricore: call plugin trap callbacks 2025-10-29 14:12:43 +00:00
xtensa target/xtensa: call plugin trap callbacks 2025-10-29 14:12:43 +00: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