sparc: Stop trying to be so fancy and use __builtin_{memcpy,memset}()

This mirrors commit ff60fab71bb3b4fdbf8caf57ff3739ffd0887396
(x86: Use __builtin_memset and __builtin_memcpy for memset/memcpy)

Signed-off-by: David S. Miller <davem@davemloft.net>

+6 -112
+2 -76
arch/sparc/include/asm/string_32.h
··· 16 16 #ifdef __KERNEL__ 17 17 18 18 extern void __memmove(void *,const void *,__kernel_size_t); 19 - extern __kernel_size_t __memcpy(void *,const void *,__kernel_size_t); 20 - extern __kernel_size_t __memset(void *,int,__kernel_size_t); 21 19 22 20 #ifndef EXPORT_SYMTAB_STROPS 23 21 ··· 30 32 }) 31 33 32 34 #define __HAVE_ARCH_MEMCPY 33 - 34 - static inline void *__constant_memcpy(void *to, const void *from, __kernel_size_t n) 35 - { 36 - extern void __copy_1page(void *, const void *); 37 - 38 - if(n <= 32) { 39 - __builtin_memcpy(to, from, n); 40 - } else if (((unsigned int) to & 7) != 0) { 41 - /* Destination is not aligned on the double-word boundary */ 42 - __memcpy(to, from, n); 43 - } else { 44 - switch(n) { 45 - case PAGE_SIZE: 46 - __copy_1page(to, from); 47 - break; 48 - default: 49 - __memcpy(to, from, n); 50 - break; 51 - } 52 - } 53 - return to; 54 - } 55 - 56 - static inline void *__nonconstant_memcpy(void *to, const void *from, __kernel_size_t n) 57 - { 58 - __memcpy(to, from, n); 59 - return to; 60 - } 61 - 62 - #undef memcpy 63 - #define memcpy(t, f, n) \ 64 - (__builtin_constant_p(n) ? \ 65 - __constant_memcpy((t),(f),(n)) : \ 66 - __nonconstant_memcpy((t),(f),(n))) 35 + #define memcpy(t, f, n) __builtin_memcpy(t, f, n) 67 36 68 37 #define __HAVE_ARCH_MEMSET 69 - 70 - static inline void *__constant_c_and_count_memset(void *s, char c, __kernel_size_t count) 71 - { 72 - extern void bzero_1page(void *); 73 - extern __kernel_size_t __bzero(void *, __kernel_size_t); 74 - 75 - if(!c) { 76 - if(count == PAGE_SIZE) 77 - bzero_1page(s); 78 - else 79 - __bzero(s, count); 80 - } else { 81 - __memset(s, c, count); 82 - } 83 - return s; 84 - } 85 - 86 - static inline void *__constant_c_memset(void *s, char c, __kernel_size_t count) 87 - { 88 - extern __kernel_size_t __bzero(void *, __kernel_size_t); 89 - 90 - if(!c) 91 - __bzero(s, count); 92 - else 93 - __memset(s, c, count); 94 - return s; 95 - } 96 - 97 - static inline void *__nonconstant_memset(void *s, char c, __kernel_size_t count) 98 - { 99 - __memset(s, c, count); 100 - return s; 101 - } 102 - 103 - #undef memset 104 - #define memset(s, c, count) \ 105 - (__builtin_constant_p(c) ? (__builtin_constant_p(count) ? \ 106 - __constant_c_and_count_memset((s), (c), (count)) : \ 107 - __constant_c_memset((s), (c), (count))) \ 108 - : __nonconstant_memset((s), (c), (count))) 38 + #define memset(s, c, count) __builtin_memset(s, c, count) 109 39 110 40 #define __HAVE_ARCH_MEMSCAN 111 41
+2 -23
arch/sparc/include/asm/string_64.h
··· 15 15 16 16 #include <asm/asi.h> 17 17 18 - extern void *__memset(void *,int,__kernel_size_t); 19 - 20 18 #ifndef EXPORT_SYMTAB_STROPS 21 19 22 20 /* First the mem*() things. */ ··· 22 24 extern void *memmove(void *, const void *, __kernel_size_t); 23 25 24 26 #define __HAVE_ARCH_MEMCPY 25 - extern void *memcpy(void *, const void *, __kernel_size_t); 27 + #define memcpy(t, f, n) __builtin_memcpy(t, f, n) 26 28 27 29 #define __HAVE_ARCH_MEMSET 28 - extern void *__builtin_memset(void *,int,__kernel_size_t); 29 - 30 - static inline void *__constant_memset(void *s, int c, __kernel_size_t count) 31 - { 32 - extern __kernel_size_t __bzero(void *, __kernel_size_t); 33 - 34 - if (!c) { 35 - __bzero(s, count); 36 - return s; 37 - } else 38 - return __memset(s, c, count); 39 - } 40 - 41 - #undef memset 42 - #define memset(s, c, count) \ 43 - ((__builtin_constant_p(count) && (count) <= 32) ? \ 44 - __builtin_memset((s), (c), (count)) : \ 45 - (__builtin_constant_p(c) ? \ 46 - __constant_memset((s), (c), (count)) : \ 47 - __memset((s), (c), (count)))) 30 + #define memset(s, c, count) __builtin_memset(s, c, count) 48 31 49 32 #define __HAVE_ARCH_MEMSCAN 50 33
-5
arch/sparc/lib/bzero.S
··· 6 6 7 7 .text 8 8 9 - .globl __memset 10 - .type __memset, #function 11 - __memset: /* %o0=buf, %o1=pat, %o2=len */ 12 - 13 9 .globl memset 14 10 .type memset, #function 15 11 memset: /* %o0=buf, %o1=pat, %o2=len */ ··· 79 83 retl 80 84 mov %o3, %o0 81 85 .size __bzero, .-__bzero 82 - .size __memset, .-__memset 83 86 .size memset, .-memset 84 87 85 88 #define EX_ST(x,y) \
+1 -1
arch/sparc/lib/checksum_32.S
··· 560 560 mov %i0, %o1 561 561 mov %i1, %o0 562 562 5: 563 - call __memcpy 563 + call memcpy 564 564 mov %i2, %o2 565 565 tst %o0 566 566 bne,a 2f
-2
arch/sparc/lib/ksyms.c
··· 30 30 EXPORT_SYMBOL(memcmp); 31 31 EXPORT_SYMBOL(memcpy); 32 32 EXPORT_SYMBOL(memset); 33 - EXPORT_SYMBOL(__memset); 34 33 EXPORT_SYMBOL(memmove); 35 34 EXPORT_SYMBOL(__bzero); 36 35 ··· 80 81 81 82 /* Special internal versions of library functions. */ 82 83 EXPORT_SYMBOL(__copy_1page); 83 - EXPORT_SYMBOL(__memcpy); 84 84 EXPORT_SYMBOL(__memmove); 85 85 EXPORT_SYMBOL(bzero_1page); 86 86
-3
arch/sparc/lib/memcpy.S
··· 543 543 b 3f 544 544 add %o0, 2, %o0 545 545 546 - #ifdef __KERNEL__ 547 - FUNC(__memcpy) 548 - #endif 549 546 FUNC(memcpy) /* %o0=dst %o1=src %o2=len */ 550 547 551 548 sub %o0, %o1, %o4
+1 -2
arch/sparc/lib/memset.S
··· 60 60 .globl __bzero_begin 61 61 __bzero_begin: 62 62 63 - .globl __bzero, __memset, 63 + .globl __bzero 64 64 .globl memset 65 65 .globl __memset_start, __memset_end 66 66 __memset_start: 67 - __memset: 68 67 memset: 69 68 and %o1, 0xff, %g3 70 69 sll %g3, 8, %g2