Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9af63aed authored by Helge Deller's avatar Helge Deller
Browse files

parisc: do not inline pa_memcpy() internal functions



gcc (4.8.x) creates wrong code when the pa_memcpy() functions are
inlined.  Especially in 32bit builds it calculates wrong return values
if we encounter a fault during execution of the memcpy.

Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent a0ffa8f0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ static inline void prefetch_dst(const void *addr)
/* Copy from a not-aligned src to an aligned dst, using shifts. Handles 4 words
 * per loop.  This code is derived from glibc. 
 */
static inline unsigned long copy_dstaligned(unsigned long dst,
static noinline unsigned long copy_dstaligned(unsigned long dst,
					unsigned long src, unsigned long len)
{
	/* gcc complains that a2 and a3 may be uninitialized, but actually
@@ -276,7 +276,7 @@ handle_store_error:
/* Returns PA_MEMCPY_OK, PA_MEMCPY_LOAD_ERROR or PA_MEMCPY_STORE_ERROR.
 * In case of an access fault the faulty address can be read from the per_cpu
 * exception data struct. */
static unsigned long pa_memcpy_internal(void *dstp, const void *srcp,
static noinline unsigned long pa_memcpy_internal(void *dstp, const void *srcp,
					unsigned long len)
{
	register unsigned long src, dst, t1, t2, t3;