linux/arch/powerpc/lib
Philippe Bergheaud 00f554fade powerpc: memcpy optimization for 64bit LE
Unaligned stores take alignment exceptions on POWER7 running in little-endian.
This is a dumb little-endian base memcpy that prevents unaligned stores.
Once booted the feature fixup code switches over to the VMX copy loops
(which are already endian safe).

The question is what we do before that switch over. The base 64bit
memcpy takes alignment exceptions on POWER7 so we can't use it as is.
Fixing the causes of alignment exception would slow it down, because
we'd need to ensure all loads and stores are aligned either through
rotate tricks or bytewise loads and stores. Either would be bad for
all other 64bit platforms.

[ I simplified the loop a bit - Anton ]

Signed-off-by: Philippe Bergheaud <felix@linux.vnet.ibm.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-04-30 15:26:18 +10:00
..
Makefile powerpc: memcpy optimization for 64bit LE 2014-04-30 15:26:18 +10:00
alloc.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
checksum_32.S powerpc: Rename files to have consistent _32/_64 suffixes 2005-10-10 21:52:43 +10:00
checksum_64.S powerpc: Restore registers on error exit from csum_partial_copy_generic() 2013-10-03 17:22:42 +10:00
checksum_wrappers_64.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
code-patching.c powerpc: Move the patch_exception to a common place 2013-12-02 14:06:54 +11:00
copy_32.S powerpc: Fix incorrect .stabs entry for copy_32.S 2010-09-02 14:07:34 +10:00
copypage_64.S powerpc: POWER7 optimised copy_page using VMX and enhanced prefetch 2012-07-03 14:14:44 +10:00
copypage_power7.S powerpc/pseries: Improve stream generation comments in copypage/user 2013-06-01 08:29:26 +10:00
copyuser_64.S powerpc: Make 64-bit non-VMX __copy_tofrom_user bi-endian 2013-12-30 14:02:30 +11:00
copyuser_power7.S powerpc: Fix endian issues in VMX copy loops 2013-10-11 16:48:25 +11:00
crtsavres.S powerpc: Add vr save/restore functions 2014-01-15 13:46:43 +11:00
devres.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
div64.S powerpc: Fix a corner case in __div64_32 2005-10-20 09:37:02 +10:00
feature-fixups-test.S powerpc: Ensure the else case of feature sections will fit 2011-01-21 14:08:33 +11:00
feature-fixups.c powerpc: Copy down exception vectors after feature fixups 2011-11-16 14:47:54 +11:00
hweight_64.S powerpc: Fix usage of register macros getting ready for %r0 change 2012-07-10 19:17:55 +10:00
ldstfp.S powerpc: Fixes for instructions not using correct register naming 2012-07-10 19:18:16 +10:00
locks.c powerpc: Fix little endian lppaca, slb_shadow and dtl_entry 2013-08-14 15:33:35 +10:00
mem_64.S powerpc: Change mtcrf to use real register names 2012-07-10 19:18:11 +10:00
memcpy_64.S powerpc: memcpy optimization for 64bit LE 2014-04-30 15:26:18 +10:00
memcpy_power7.S powerpc: Fix endian issues in VMX copy loops 2013-10-11 16:48:25 +11:00
rheap.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
sstep.c powerpc: Fix Unaligned LE Floating Point Loads and Stores 2013-10-30 16:01:36 +11:00
string.S powerpc: 64bit optimised __clear_user 2012-07-03 14:14:41 +10:00
string_64.S powerpc: Optimise the 64bit optimised __clear_user 2012-07-03 14:14:48 +10:00
usercopy_64.c powerpc: Rename files to have consistent _32/_64 suffixes 2005-10-10 21:52:43 +10:00
vmx-helper.c powerpc: POWER7 optimised copy_page using VMX and enhanced prefetch 2012-07-03 14:14:44 +10:00
xor_vmx.c powerpc: Add VMX optimised xor for RAID5 2013-10-30 16:02:28 +11:00