From 98c168df715a0605fe1f2b8713080515a34512a2 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Sat, 1 Mar 2008 03:04:57 +1100 Subject: [PATCH] --- yaml --- r: 91508 b: refs/heads/master c: 0119536cd314ef95553604208c25bc35581f7f0a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/ppc_ksyms.c | 1 + trunk/arch/powerpc/lib/string.S | 14 ++++++++++++++ trunk/include/asm-powerpc/string.h | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c61d94891f25..4ccaca31a161 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4df4441e418c809f263939b9f371b67aca28a280 +refs/heads/master: 0119536cd314ef95553604208c25bc35581f7f0a diff --git a/trunk/arch/powerpc/kernel/ppc_ksyms.c b/trunk/arch/powerpc/kernel/ppc_ksyms.c index a722ede726db..5a4c76eada48 100644 --- a/trunk/arch/powerpc/kernel/ppc_ksyms.c +++ b/trunk/arch/powerpc/kernel/ppc_ksyms.c @@ -78,6 +78,7 @@ EXPORT_SYMBOL(strncpy); EXPORT_SYMBOL(strcat); EXPORT_SYMBOL(strlen); EXPORT_SYMBOL(strcmp); +EXPORT_SYMBOL(strncmp); EXPORT_SYMBOL(csum_partial); EXPORT_SYMBOL(csum_partial_copy_generic); diff --git a/trunk/arch/powerpc/lib/string.S b/trunk/arch/powerpc/lib/string.S index c4c622d8e6ac..49eb1f1a2bb4 100644 --- a/trunk/arch/powerpc/lib/string.S +++ b/trunk/arch/powerpc/lib/string.S @@ -75,6 +75,20 @@ _GLOBAL(strcmp) beq 1b blr +_GLOBAL(strncmp) + PPC_LCMPI r5,0 + beqlr + mtctr r5 + addi r5,r3,-1 + addi r4,r4,-1 +1: lbzu r3,1(r5) + cmpwi 1,r3,0 + lbzu r0,1(r4) + subf. r3,r0,r3 + beqlr 1 + bdnzt eq,1b + blr + _GLOBAL(strlen) addi r4,r3,-1 1: lbzu r0,1(r4) diff --git a/trunk/include/asm-powerpc/string.h b/trunk/include/asm-powerpc/string.h index aa40f92c298d..e40010abcaf1 100644 --- a/trunk/include/asm-powerpc/string.h +++ b/trunk/include/asm-powerpc/string.h @@ -7,6 +7,7 @@ #define __HAVE_ARCH_STRNCPY #define __HAVE_ARCH_STRLEN #define __HAVE_ARCH_STRCMP +#define __HAVE_ARCH_STRNCMP #define __HAVE_ARCH_STRCAT #define __HAVE_ARCH_MEMSET #define __HAVE_ARCH_MEMCPY @@ -18,6 +19,7 @@ extern char * strcpy(char *,const char *); extern char * strncpy(char *,const char *, __kernel_size_t); extern __kernel_size_t strlen(const char *); extern int strcmp(const char *,const char *); +extern int strncmp(const char *, const char *, __kernel_size_t); extern char * strcat(char *, const char *); extern void * memset(void *,int,__kernel_size_t); extern void * memcpy(void *,const void *,__kernel_size_t);