source: trunk/target/linux/generic/patches-2.6.37/306-mips_mem_functions_performance.patch @ 26692

Last change on this file since 26692 was 26692, checked in by nbd, 6 years ago

kernel: reorganize 2.6.37 patches

File size: 2.2 KB
  • arch/mips/include/asm/string.h

    a b strncmp(__const__ char *__cs, __const__  
    133133 
    134134#define __HAVE_ARCH_MEMSET 
    135135extern void *memset(void *__s, int __c, size_t __count); 
     136#define memset(__s, __c, len)                                   \ 
     137({                                                              \ 
     138        size_t __len = (len);                                   \ 
     139        void *__ret;                                            \ 
     140        if (__builtin_constant_p(len) && __len >= 64)           \ 
     141                __ret = memset((__s), (__c), __len);            \ 
     142        else                                                    \ 
     143                __ret = __builtin_memset((__s), (__c), __len);  \ 
     144        __ret;                                                  \ 
     145}) 
    136146 
    137147#define __HAVE_ARCH_MEMCPY 
    138148extern void *memcpy(void *__to, __const__ void *__from, size_t __n); 
     149#define memcpy(dst, src, len)                                   \ 
     150({                                                              \ 
     151        size_t __len = (len);                                   \ 
     152        void *__ret;                                            \ 
     153        if (__builtin_constant_p(len) && __len >= 64)           \ 
     154                __ret = memcpy((dst), (src), __len);            \ 
     155        else                                                    \ 
     156                __ret = __builtin_memcpy((dst), (src), __len);  \ 
     157        __ret;                                                  \ 
     158}) 
    139159 
    140160#define __HAVE_ARCH_MEMMOVE 
    141161extern void *memmove(void *__dest, __const__ void *__src, size_t __n); 
     162#define memmove(dst, src, len)                                  \ 
     163({                                                              \ 
     164        size_t __len = (len);                                   \ 
     165        void *__ret;                                            \ 
     166        if (__builtin_constant_p(len) && __len >= 64)           \ 
     167                __ret = memmove((dst), (src), __len);           \ 
     168        else                                                    \ 
     169                __ret = __builtin_memmove((dst), (src), __len); \ 
     170        __ret;                                                  \ 
     171}) 
     172 
     173#define __HAVE_ARCH_MEMCMP 
     174#define memcmp(src1, src2, len) __builtin_memcmp((src1), (src2), (len)) 
    142175 
    143176#endif /* _ASM_STRING_H */ 
  • arch/mips/lib/Makefile

    a b  
    33# 
    44 
    55lib-y   += csum_partial.o delay.o memcpy.o memcpy-inatomic.o memset.o \ 
    6            strlen_user.o strncpy_user.o strnlen_user.o uncached.o 
     6           strlen_user.o strncpy_user.o strnlen_user.o uncached.o memcmp.o 
    77 
    88obj-y                   += iomap.o 
    99obj-$(CONFIG_PCI)       += iomap-pci.o 
  • new file arch/mips/lib/memcmp.c

    - +  
     1/* 
     2 *  copied from linux/lib/string.c 
     3 * 
     4 *  Copyright (C) 1991, 1992  Linus Torvalds 
     5 */ 
     6 
     7#include <linux/module.h> 
     8#include <linux/string.h> 
     9 
     10#undef memcmp 
     11int memcmp(const void *cs, const void *ct, size_t count) 
     12{ 
     13        const unsigned char *su1, *su2; 
     14        int res = 0; 
     15 
     16        for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) 
     17                if ((res = *su1 - *su2) != 0) 
     18                        break; 
     19        return res; 
     20} 
     21EXPORT_SYMBOL(memcmp); 
     22 
Note: See TracBrowser for help on using the repository browser.