mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
CRISv32: Add arch optimized strcmp.
Add an optimized strcmp for CRISv32. This improves strcmp performance with about 25% when comparing a 55 character string with itself. Signed-off-by: Edgar Iglesias <edgar@axis.com> Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
This commit is contained in:
parent
b0903ee8e4
commit
7f2ff23db1
@ -3,5 +3,5 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
lib-y = checksum.o checksumcopy.o string.o usercopy.o memset.o \
|
lib-y = checksum.o checksumcopy.o string.o usercopy.o memset.o \
|
||||||
csumcpfruser.o spinlock.o delay.o
|
csumcpfruser.o spinlock.o delay.o strcmp.o
|
||||||
|
|
||||||
|
21
arch/cris/arch-v32/lib/strcmp.S
Normal file
21
arch/cris/arch-v32/lib/strcmp.S
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
; strcmp.S -- CRISv32 version.
|
||||||
|
; Copyright (C) 2008 AXIS Communications AB
|
||||||
|
; Written by Edgar E. Iglesias
|
||||||
|
;
|
||||||
|
; This source code is licensed under the GNU General Public License,
|
||||||
|
; Version 2. See the file COPYING for more details.
|
||||||
|
|
||||||
|
.global strcmp
|
||||||
|
.type strcmp,@function
|
||||||
|
strcmp:
|
||||||
|
1:
|
||||||
|
move.b [$r10+], $r12
|
||||||
|
seq $r13
|
||||||
|
sub.b [$r11+], $r12
|
||||||
|
or.b $r12, $r13
|
||||||
|
beq 1b
|
||||||
|
nop
|
||||||
|
|
||||||
|
ret
|
||||||
|
movs.b $r12, $r10
|
||||||
|
.size strcmp, . - strcmp
|
@ -11,4 +11,10 @@ extern void *memcpy(void *, const void *, size_t);
|
|||||||
#define __HAVE_ARCH_MEMSET
|
#define __HAVE_ARCH_MEMSET
|
||||||
extern void *memset(void *, int, size_t);
|
extern void *memset(void *, int, size_t);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||||
|
/* For v32 we provide strcmp. */
|
||||||
|
#define __HAVE_ARCH_STRCMP
|
||||||
|
extern int strcmp(const char *s1, const char *s2);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user