mirror_qemu/target-ppc
Tom Musta 818692ff95 target-ppc: Altivec 2.07: Change Bit Masks to Support 64-bit Rotates and Shifts
Existing code in the VROTATE, VSL and VSR macros for the Altivec rotate and shift
helpers uses a formula to compute a bit mask used to extract the rotate/shift
amount from the VRB register.  What is desired is:

    mask = (1 << (3 + log2(sizeof(element)))) - 1

but what is implemented is:

    mask = (1 << (3 + (sizeof(element)/2))) - 1

This produces correct answers when "element" is uint8_t, uint16_t or uint_32t.  But
it breaks down when element is uint64_t.

This patch corrects the situation.  Since the mask is known at compile time, the
macros are changed to simply accept the mask as an argument.

Subsequent patches in this series will add double-word variants of rotates and
shifts and thus take advantage of this fix.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
2014-03-05 03:06:57 +01:00
..
Makefile.objs target-ppc: dump-guest-memory support 2013-10-25 23:25:48 +02:00
STATUS target-ppc: remove powerpc 970gx 2014-03-05 03:06:23 +01:00
arch_dump.c target-ppc: dump-guest-memory support 2013-10-25 23:25:48 +02:00
cpu-models.c target-ppc: remove powerpc 970gx 2014-03-05 03:06:23 +01:00
cpu-models.h target-ppc: remove powerpc 970gx 2014-03-05 03:06:23 +01:00
cpu-qom.h powerpc: add PVR mask support 2013-12-20 01:57:45 +01:00
cpu.h target-ppc: Altivec 2.07: Update AVR Structure 2014-03-05 03:06:51 +01:00
excp_helper.c exec: Make ldl_*_phys input an AddressSpace 2014-02-11 22:56:54 +10:00
fpu_helper.c target-ppc: Add ISA 2.06 ftsqrt 2014-03-05 03:06:43 +01:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
helper.h target-ppc: Altivec 2.07: Unpack Signed Word Instructions 2014-03-05 03:06:56 +01:00
helper_regs.h PPC: Add VSX to hflags 2013-12-20 01:58:10 +01:00
int_helper.c target-ppc: Altivec 2.07: Change Bit Masks to Support 64-bit Rotates and Shifts 2014-03-05 03:06:57 +01:00
kvm-stub.c kvm/openpic: in-kernel mpic support 2013-07-01 01:11:14 +02:00
kvm.c PPC: KVM: suppress warnings about not supported SPRs 2014-03-05 03:06:45 +01:00
kvm_ppc.c PPC: KVM: Compile fix for qemu_notify_event 2013-09-02 10:06:42 +02:00
kvm_ppc.h target-ppc: Add helper for KVM_PPC_RTAS_DEFINE_TOKEN 2013-10-25 23:25:46 +02:00
machine.c target-ppc: Use #define for max slb entries 2013-10-25 23:25:48 +02:00
mem_helper.c target-ppc: Little Endian Correction to Load/Store Vector Element 2013-10-25 23:25:45 +02:00
mfrom_table.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
mfrom_table_gen.c fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
misc_helper.c target-ppc: Remove vestigial PowerPC 620 support 2013-03-22 15:28:46 +01:00
mmu-hash32.c target-ppc: Change LOG_MMU_STATE() argument to CPUState 2013-07-09 21:33:04 +02:00
mmu-hash32.h exec: Make stl_*_phys input an AddressSpace 2014-02-11 22:57:18 +10:00
mmu-hash64.c mmu-hash64: fix Virtual Page Class Key Protection 2014-03-05 03:06:25 +01:00
mmu-hash64.h exec: Make stq_*_phys input an AddressSpace 2014-02-11 22:57:12 +10:00
mmu_helper.c Merge branch 'tcg-next' of git://github.com/rth7680/qemu 2013-09-03 01:35:43 +02:00
timebase_helper.c ppc: Avoid AREG0 for timebase helpers 2012-06-24 01:04:43 +02:00
translate.c target-ppc: Altivec 2.07: Vector Merge Instructions 2014-03-05 03:06:56 +01:00
translate_init.c target-ppc: Altivec 2.07: Add Instruction Flag 2014-03-05 03:06:51 +01:00
user_only_helper.c target-ppc: Split user only code out of mmu_helper.c 2013-03-22 15:28:53 +01:00