qemu-e2k/target/ppc
Richard Purdie 5260ecffd2 target/ppc: Fix fallback to MFSS for MFFS* instructions on pre 3.0 ISAs
The following commits changed the code such that the fallback to MFSS for MFFSCRN,
MFFSCRNI, MFFSCE and MFFSL on pre 3.0 ISAs was removed and became an illegal instruction:

  bf8adfd88b - target/ppc: Move mffscrn[i] to decodetree
  394c2e2fda - target/ppc: Move mffsce to decodetree
  3e5bce70ef - target/ppc: Move mffsl to decodetree

The hardware will handle them as a MFFS instruction as the code did previously.
This means applications that were segfaulting under qemu when encountering these
instructions which is used in glibc libm functions for example.

The fallback for MFFSCDRN and MFFSCDRNI added in a later patch was also missing.

This patch restores the fallback to MFSS for these instructions on pre 3.0s ISAs
as the hardware decoder would, fixing the segfaulting libm code. It doesn't have
the fallback for 3.0 onwards to match hardware behaviour.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Reviewed-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230510111913.1718734-1-richard.purdie@linuxfoundation.org>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2023-05-27 08:25:19 -03:00
..
translate target/ppc: Fix fallback to MFSS for MFFS* instructions on pre 3.0 ISAs 2023-05-27 08:25:19 -03:00
arch_dump.c dump: Replace opaque DumpState pointer with a typed one 2022-10-06 19:30:43 +04:00
compat.c powerpc tcg: Fix Lesser GPL version number 2020-11-15 16:38:50 +01:00
cpu_init.c gdbstub: move register helpers into standalone include 2023-03-07 20:44:08 +00:00
cpu-models.c target/ppc: Fix MPC8555 and MPC8560 core type to e500v1 2022-07-06 10:30:01 -03:00
cpu-models.h target/ppc: Fix MPC8555 and MPC8560 core type to e500v1 2022-07-06 10:30:01 -03:00
cpu-param.h target/ppc: Remove NB_MMU_MODES define 2023-03-13 06:44:37 -07:00
cpu-qom.h target/ppc: Restrict 'qapi-commands-machine.h' to system emulation 2023-03-02 07:51:33 +01:00
cpu.c ppc: spapr: cleanup cr get/set with helpers. 2023-05-05 12:34:22 -03:00
cpu.h target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ 2023-05-23 16:51:19 -07:00
dfp_helper.c target/ppc: Fix warning with clang-15 2023-02-27 22:29:01 +01:00
excp_helper.c target/ppc: Fix helper_pminsn() prototype 2023-03-24 11:46:08 +01:00
fpu_helper.c target/ppc: Moved XSTSTDC[QDS]P to decodetree 2022-10-28 13:15:22 -03:00
gdbstub.c ppc: spapr: cleanup cr get/set with helpers. 2023-05-05 12:34:22 -03:00
helper_regs.c target/ppc: Use QEMU_IOTHREAD_LOCK_GUARD in cpu_interrupt_exittb 2023-01-04 16:20:01 -08:00
helper_regs.h target/ppc: Remove env->immu_idx and env->dmmu_idx 2021-05-04 11:41:25 +10:00
helper.h target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ 2023-05-23 16:51:19 -07:00
insn32.decode target/ppc: Fix fallback to MFSS for MFFS* instructions on pre 3.0 ISAs 2023-05-27 08:25:19 -03:00
insn64.decode target/ppc: Implemented [pm]xvbf16ger2* 2022-05-26 17:11:33 -03:00
int_helper.c target/ppc: Move VABSDU[BHW] to decodetree and use gvec 2022-10-28 13:15:22 -03:00
internal.h target/ppc/internal: Restrict MMU declarations to sysemu 2023-02-27 22:29:01 +01:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
kvm_ppc.h target/ppc/kvm: Add missing "cpu.h" and "exec/hwaddr.h" 2022-12-21 14:17:55 -03:00
kvm-stub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
kvm.c ppc: spapr: cleanup cr get/set with helpers. 2023-05-05 12:34:22 -03:00
machine.c target/ppc: Fix host PVR matching for KVM 2022-08-30 16:20:29 -03:00
mem_helper.c target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ 2023-05-23 16:51:19 -07:00
meson.build target/ppc: Restrict 'qapi-commands-machine.h' to system emulation 2023-03-02 07:51:33 +01:00
misc_helper.c target/ppc: always use ppc_set_irq to set env->pending_interrupts 2022-10-28 13:15:22 -03:00
mmu_common.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
mmu_helper.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
mmu-book3s-v3.c ppc: Check partition and process table alignment 2022-07-18 13:59:43 -03:00
mmu-book3s-v3.h target/ppc: Implement ISA 3.00 tlbie[l] 2022-07-18 13:59:43 -03:00
mmu-books.h target/ppc: introduce mmu-books.h 2021-07-09 10:38:19 +10:00
mmu-hash32.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
mmu-hash32.h target/ppc: Remove PowerPC 601 CPUs 2022-02-09 09:08:55 +01:00
mmu-hash64.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
mmu-hash64.h target/ppc: fix Hash64 MMU update of PTE bit R 2021-11-29 21:00:08 +01:00
mmu-radix64.c target/ppc: Fix regression in Radix MMU 2022-10-29 06:34:52 -03:00
mmu-radix64.h target/ppc: Check effective address validity 2022-01-04 07:55:34 +01:00
power8-pmu-regs.c.inc target/ppc: Avoid tcg_const_* in power8-pmu-regs.c.inc 2023-03-13 07:03:39 -07:00
power8-pmu.c target/ppc: Increment PMC5 with inline insns 2022-10-28 13:15:23 -03:00
power8-pmu.h target/ppc: Increment PMC5 with inline insns 2022-10-28 13:15:23 -03:00
ppc-qmp-cmds.c ppc: spapr: cleanup cr get/set with helpers. 2023-05-05 12:34:22 -03:00
spr_common.h target/ppc: Implement the DEXCR and HDEXCR 2022-12-21 14:17:55 -03:00
tcg-stub.c target/ppc: created tcg-stub.c file 2021-06-03 13:22:06 +10:00
timebase_helper.c target/ppc: fix exception error code in helper_{load, store}_dcr 2022-07-18 13:59:43 -03:00
trace-events target/ppc: Improve KVM hypercall trace 2022-04-20 18:00:30 -03:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate.c target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ 2023-05-23 16:51:19 -07:00
user_only_helper.c target/ppc: Implement ppc_cpu_record_sigsegv 2021-11-02 07:00:52 -04:00