mirror of
https://github.com/torvalds/linux.git
synced 2024-10-24 14:10:59 +00:00
sparc32: Remove inline strncmp "optimization" for constant counts.
Let the compiler do stuff like this. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
afaedde7c9
commit
b55e81b9f8
|
@ -61,68 +61,7 @@ extern int memcmp(const void *,const void *,__kernel_size_t);
|
||||||
extern __kernel_size_t strlen(const char *);
|
extern __kernel_size_t strlen(const char *);
|
||||||
|
|
||||||
#define __HAVE_ARCH_STRNCMP
|
#define __HAVE_ARCH_STRNCMP
|
||||||
|
extern int strncmp(const char *, const char *, __kernel_size_t);
|
||||||
extern int __strncmp(const char *, const char *, __kernel_size_t);
|
|
||||||
|
|
||||||
static inline int __constant_strncmp(const char *src, const char *dest, __kernel_size_t count)
|
|
||||||
{
|
|
||||||
register int retval;
|
|
||||||
switch(count) {
|
|
||||||
case 0: return 0;
|
|
||||||
case 1: return (src[0] - dest[0]);
|
|
||||||
case 2: retval = (src[0] - dest[0]);
|
|
||||||
if(!retval && src[0])
|
|
||||||
retval = (src[1] - dest[1]);
|
|
||||||
return retval;
|
|
||||||
case 3: retval = (src[0] - dest[0]);
|
|
||||||
if(!retval && src[0]) {
|
|
||||||
retval = (src[1] - dest[1]);
|
|
||||||
if(!retval && src[1])
|
|
||||||
retval = (src[2] - dest[2]);
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
case 4: retval = (src[0] - dest[0]);
|
|
||||||
if(!retval && src[0]) {
|
|
||||||
retval = (src[1] - dest[1]);
|
|
||||||
if(!retval && src[1]) {
|
|
||||||
retval = (src[2] - dest[2]);
|
|
||||||
if (!retval && src[2])
|
|
||||||
retval = (src[3] - dest[3]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
case 5: retval = (src[0] - dest[0]);
|
|
||||||
if(!retval && src[0]) {
|
|
||||||
retval = (src[1] - dest[1]);
|
|
||||||
if(!retval && src[1]) {
|
|
||||||
retval = (src[2] - dest[2]);
|
|
||||||
if (!retval && src[2]) {
|
|
||||||
retval = (src[3] - dest[3]);
|
|
||||||
if (!retval && src[3])
|
|
||||||
retval = (src[4] - dest[4]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
default:
|
|
||||||
retval = (src[0] - dest[0]);
|
|
||||||
if(!retval && src[0]) {
|
|
||||||
retval = (src[1] - dest[1]);
|
|
||||||
if(!retval && src[1]) {
|
|
||||||
retval = (src[2] - dest[2]);
|
|
||||||
if(!retval && src[2])
|
|
||||||
retval = __strncmp(src+3,dest+3,count-3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef strncmp
|
|
||||||
#define strncmp(__arg0, __arg1, __arg2) \
|
|
||||||
(__builtin_constant_p(__arg2) ? \
|
|
||||||
__constant_strncmp(__arg0, __arg1, __arg2) : \
|
|
||||||
__strncmp(__arg0, __arg1, __arg2))
|
|
||||||
|
|
||||||
#endif /* !EXPORT_SYMTAB_STROPS */
|
#endif /* !EXPORT_SYMTAB_STROPS */
|
||||||
|
|
||||||
|
|
|
@ -56,8 +56,6 @@ extern int __divdi3(int, int);
|
||||||
extern void (*__copy_1page)(void *, const void *);
|
extern void (*__copy_1page)(void *, const void *);
|
||||||
extern void (*bzero_1page)(void *);
|
extern void (*bzero_1page)(void *);
|
||||||
|
|
||||||
extern int __strncmp(const char *, const char *, __kernel_size_t);
|
|
||||||
|
|
||||||
extern void ___rw_read_enter(void);
|
extern void ___rw_read_enter(void);
|
||||||
extern void ___rw_read_try(void);
|
extern void ___rw_read_try(void);
|
||||||
extern void ___rw_read_exit(void);
|
extern void ___rw_read_exit(void);
|
||||||
|
@ -81,9 +79,6 @@ EXPORT_SYMBOL(__copy_1page);
|
||||||
EXPORT_SYMBOL(__memmove);
|
EXPORT_SYMBOL(__memmove);
|
||||||
EXPORT_SYMBOL(bzero_1page);
|
EXPORT_SYMBOL(bzero_1page);
|
||||||
|
|
||||||
/* string functions */
|
|
||||||
EXPORT_SYMBOL(__strncmp);
|
|
||||||
|
|
||||||
/* Moving data to/from/in userspace. */
|
/* Moving data to/from/in userspace. */
|
||||||
EXPORT_SYMBOL(__copy_user);
|
EXPORT_SYMBOL(__copy_user);
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,7 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 4
|
.align 4
|
||||||
.global __strncmp, strncmp
|
.global strncmp
|
||||||
__strncmp:
|
|
||||||
strncmp:
|
strncmp:
|
||||||
mov %o0, %g3
|
mov %o0, %g3
|
||||||
mov 0, %o3
|
mov 0, %o3
|
||||||
|
|
Loading…
Reference in New Issue
Block a user