diff options
Diffstat (limited to 'arch/s390/boot/compressed/misc.c')
| -rw-r--r-- | arch/s390/boot/compressed/misc.c | 43 | 
1 files changed, 23 insertions, 20 deletions
diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c index 465eca756fe..c4c6a1cf221 100644 --- a/arch/s390/boot/compressed/misc.c +++ b/arch/s390/boot/compressed/misc.c @@ -71,34 +71,37 @@ void *memset(void *s, int c, size_t n)  {  	char *xs; -	if (c == 0) -		return __builtin_memset(s, 0, n); - -	xs = (char *) s; -	if (n > 0) -		do { -			*xs++ = c; -		} while (--n > 0); +	xs = s; +	while (n--) +		*xs++ = c;  	return s;  } -void *memcpy(void *__dest, __const void *__src, size_t __n) +void *memcpy(void *dest, const void *src, size_t n)  { -	return __builtin_memcpy(__dest, __src, __n); +	const char *s = src; +	char *d = dest; + +	while (n--) +		*d++ = *s++; +	return dest;  } -void *memmove(void *__dest, __const void *__src, size_t __n) +void *memmove(void *dest, const void *src, size_t n)  { -	char *d; -	const char *s; +	const char *s = src; +	char *d = dest; -	if (__dest <= __src) -		return __builtin_memcpy(__dest, __src, __n); -	d = __dest + __n; -	s = __src + __n; -	while (__n--) -		*--d = *--s; -	return __dest; +	if (d <= s) { +		while (n--) +			*d++ = *s++; +	} else { +		d += n; +		s += n; +		while (n--) +			*--d = *--s; +	} +	return dest;  }  static void error(char *x)  |