qemu/target/hppa
Helge Deller ead5078cf1 target/hppa: Fix PSW V-bit packaging in cpu_hppa_get for hppa64
While adding hppa64 support, the psw_v variable got extended from 32 to 64
bits.  So, when packaging the PSW-V bit from the psw_v variable for interrupt
processing, check bit 31 instead the 63th (sign) bit.

This fixes a hard to find Linux kernel boot issue where the loss of the PSW-V
bit due to an ITLB interruption in the middle of a series of ds/addc
instructions (from the divU milicode library) generated the wrong division
result and thus triggered a Linux kernel crash.

Link: https://lore.kernel.org/lkml/718b8afe-222f-4b3a-96d3-93af0e4ceff1@roeck-us.net/
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Fixes: 931adff314 ("target/hppa: Update cpu_hppa_get/put_psw for hppa64")
Cc: qemu-stable@nongnu.org # v8.2+
2024-09-03 22:08:22 +02:00
..
cpu-param.h target: Define TCG_GUEST_DEFAULT_MO in 'cpu-param.h' 2024-04-26 15:31:37 +02:00
cpu-qom.h target: Move ArchCPUClass definition to 'cpu.h' 2023-11-07 13:08:48 +01:00
cpu.c target: Set TCGCPUOps::cpu_exec_halt to target's has_work implementation 2024-07-11 11:41:34 +01:00
cpu.h target/hppa: Fix PSW V-bit packaging in cpu_hppa_get for hppa64 2024-09-03 22:08:22 +02:00
fpu_helper.c target/hppa: Use registerfields.h for FPSR 2024-05-15 10:03:44 +02:00
gdbstub.c linux-user/hppa: Force all code addresses to PRIV_USER 2024-05-15 10:03:44 +02:00
helper.c target/hppa: Fix PSW V-bit packaging in cpu_hppa_get for hppa64 2024-09-03 22:08:22 +02:00
helper.h target/hppa: Adjust priv for B,GATE at runtime 2024-05-15 10:03:45 +02:00
insns.decode target/hppa: Add diag instructions to set/restore shadow registers 2024-03-29 08:14:56 -10:00
int_helper.c target/hppa: Log cpu state at interrupt 2024-05-15 10:03:45 +02:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
machine.c target/hppa: Constify VMState in machine.c 2023-12-29 11:17:30 +11:00
mem_helper.c target/hppa: Adjust priv for B,GATE at runtime 2024-05-15 10:03:45 +02:00
meson.build meson: Rename target_softmmu_arch -> target_system_arch 2023-10-07 19:03:07 +02:00
op_helper.c target/hppa: Drop tlb_entry return from hppa_get_physical_address 2024-05-15 10:03:44 +02:00
sys_helper.c target/hppa: Log cpu state on return-from-interrupt 2024-05-15 10:03:45 +02:00
trace-events target/hppa: Add pa2.0 cpu local tlb flushes 2023-11-06 18:49:34 -08:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate.c target/hppa: 2024-05-15 11:46:58 +02:00