qemu-e2k/target-ppc
Alexander Graf 13b6a45565 PPC: e500: Merge 32 and 64 bit SPE emulation
Today we have a lot of conditional code in the SPE emulation depending on
whether we have 64bit GPRs or not.

Unfortunately the assumption that we can just recycle the 64bit GPR
implementation is wrong. Normal SPE implementations maintain the upper 32 bits
on all non-SPE instructions which then only modify the low 32 bits. However
all instructions we model that adhere to the normal SF based switching don't
care whether they operate on 32 or 64 bit registers and just always use the full
64 bits.

So let's remove that dubious SPE optimization and revert everything to the same
code path the 32bit target code was taking. That way we get rid of differences
between the two implementations, but will get a slight performance hit when
emulating SPE instructions.

This fixes SPE emulation with qemu-system-ppc64 for me.

Signed-off-by: Alexander Graf <agraf@suse.de>
2014-06-16 13:24:41 +02:00
..
arch_dump.c target-ppc: Set the correct endianness in ELF dump header 2014-06-16 13:24:36 +02:00
cpu-models.c PPC: Make all e500 CPUs SVR aware 2014-06-16 13:24:34 +02:00
cpu-models.h target-ppc: Add "compat" CPU option 2014-06-16 13:24:37 +02:00
cpu-qom.h target-ppc: Define Processor Compatibility Masks 2014-06-16 13:24:37 +02:00
cpu.h PPC: e500: Merge 32 and 64 bit SPE emulation 2014-06-16 13:24:41 +02:00
dfp_helper.c target-ppc: Introduce DFP Shift Significand 2014-06-16 13:24:32 +02:00
excp_helper.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
fpu_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
gdbstub.c target-ppc: gdbstub allow byte swapping for reading/writing registers 2014-06-16 13:24:27 +02:00
helper_regs.h PPC: Only enter MSR_POW when no interrupts pending 2014-04-08 11:20:05 +02:00
helper.h PPC: e500: Fix MMUCSR0 emulation 2014-06-16 13:24:40 +02:00
int_helper.c target-ppc: Refactor AES Instructions 2014-06-16 13:24:33 +02:00
kvm_ppc.c PPC: KVM: Compile fix for qemu_notify_event 2013-09-02 10:06:42 +02:00
kvm_ppc.h KVM: PPC: Expose fixup hcall capability 2014-06-16 13:24:41 +02:00
kvm-stub.c kvm/openpic: in-kernel mpic support 2013-07-01 01:11:14 +02:00
kvm.c KVM: PPC: Expose fixup hcall capability 2014-06-16 13:24:41 +02:00
machine.c target-ppc: Remove PVR check from migration 2014-06-16 13:24:27 +02:00
Makefile.objs target-ppc: Introduce DFP Helper Utilities 2014-06-16 13:24:29 +02:00
mem_helper.c target-ppc: Allow little-endian user mode. 2014-06-16 13:24:40 +02:00
mfrom_table_gen.c fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
mfrom_table.c
misc_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
mmu_helper.c PPC: e500: Fix TLB lookup for 32bit CPUs 2014-06-16 13:24:41 +02:00
mmu-hash32.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
mmu-hash32.h target-ppc: Use PowerPCCPU in PowerPCCPUClass::handle_mmu_fault hook 2014-03-13 19:20:48 +01:00
mmu-hash64.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
mmu-hash64.h target-ppc: Use PowerPCCPU in PowerPCCPUClass::handle_mmu_fault hook 2014-03-13 19:20:48 +01:00
STATUS target-ppc: remove powerpc 970gx 2014-03-05 03:06:23 +01:00
timebase_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
translate_init.c target-ppc: Support VSX in PPC User Mode 2014-06-16 13:24:40 +02:00
translate.c PPC: e500: Merge 32 and 64 bit SPE emulation 2014-06-16 13:24:41 +02:00
user_only_helper.c cpu: Move exception_index field from CPU_COMMON to CPUState 2014-03-13 19:20:46 +01:00