qemu/target/hppa
Helge Deller e98b0c7b29 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+
(cherry picked from commit ead5078cf1)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
(Mjt: context fixup in target/hppa/helper.c due to lack of
 v9.0.0-688-gebc9401a4067 "target/hppa: Split PSW X and B into their own field")
2024-09-05 23:00:34 +03:00
..
cpu-param.h target/hppa: Reduce TARGET_PHYS_ADDR_SPACE_BITS to 40 2023-11-13 09:21:32 -08:00
cpu-qom.h target: Move ArchCPUClass definition to 'cpu.h' 2023-11-07 13:08:48 +01:00
cpu.c target/hppa: Fix IOR and ISR on unaligned access trap 2024-01-17 10:32:47 +03:00
cpu.h target/hppa: Fix PSW V-bit packaging in cpu_hppa_get for hppa64 2024-09-05 23:00:34 +03:00
fpu_helper.c target/hppa: Extract FPU helpers to fpu_helper.c 2023-02-27 22:29:01 +01:00
gdbstub.c target/hppa: Drop attempted gdbstub support for hppa64 2023-11-06 18:49:34 -08:00
helper.c target/hppa: Fix PSW V-bit packaging in cpu_hppa_get for hppa64 2024-09-05 23:00:34 +03:00
helper.h target/hppa: Add pa2.0 cpu local tlb flushes 2023-11-06 18:49:34 -08:00
insns.decode target/hppa: exit tb on flush cache instructions 2024-03-22 00:32:47 +03:00
int_helper.c target/hppa: Fix calculation of CR_IIASQ back register 2023-11-13 09:17:07 -08:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
machine.c target/hppa: spelling fixes: Indicies, Truely 2023-11-15 11:59:54 +03:00
mem_helper.c target/hppa: fix access_id check 2024-03-22 00:32:41 +03:00
meson.build meson: Rename target_softmmu_arch -> target_system_arch 2023-10-07 19:03:07 +02:00
op_helper.c target/hppa: fix do_stdby_e() 2024-03-22 00:32:56 +03:00
sys_helper.c target/hppa: Update IIAOQ, IIASQ for pa2.0 2023-11-06 18:49:34 -08: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: Clear psw_n for BE on use_nullify_skip path 2024-04-01 19:23:57 +03:00