powerpc: Make 64-bit non-VMX __copy_tofrom_user bi-endian
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 17 Dec 2013 22:29:57 +0000 (09:29 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 30 Dec 2013 03:02:30 +0000 (14:02 +1100)
commit20151169f1de4b170368fdb574024027620d0d49
tree4606638e96a390c82d602fd5df00cd193890bf20
parente8a00ad5e238421ded856ea39f692b94c2d324eb
powerpc: Make 64-bit non-VMX __copy_tofrom_user bi-endian

The powerpc 64-bit __copy_tofrom_user() function uses shifts to handle
unaligned invocations.  However, these shifts were designed for
big-endian systems: On little-endian systems, they must shift in the
opposite direction.

This commit relies on the C preprocessor to insert the correct shifts
into the assembly code.

[ This is a rare but nasty LE issue. Most of the time we use the POWER7
optimised __copy_tofrom_user_power7 loop, but when it hits an exception
we fall back to the base __copy_tofrom_user loop. - Anton ]

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/lib/copyuser_64.S