aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2008-02-29 11:04:57 -0500
committerPaul Mackerras <paulus@samba.org>2008-04-06 20:03:03 -0400
commit0119536cd314ef95553604208c25bc35581f7f0a (patch)
treec196d0652c5bc6bee252d6628cfd76771b2e9131 /arch
parent4df4441e418c809f263939b9f371b67aca28a280 (diff)
[POWERPC] Add hand-coded assembly strcmp
We have an assembly version of strncmp for the bootwrapper, but not for the kernel, so we end up using the C version in the kernel. This takes the strncmp code from the bootup and copies it to the kernel proper, adding two instructions so it copes correctly with len==0. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c1
-rw-r--r--arch/powerpc/lib/string.S14
2 files changed, 15 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index a722ede726db..5a4c76eada48 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -78,6 +78,7 @@ EXPORT_SYMBOL(strncpy);
78EXPORT_SYMBOL(strcat); 78EXPORT_SYMBOL(strcat);
79EXPORT_SYMBOL(strlen); 79EXPORT_SYMBOL(strlen);
80EXPORT_SYMBOL(strcmp); 80EXPORT_SYMBOL(strcmp);
81EXPORT_SYMBOL(strncmp);
81 82
82EXPORT_SYMBOL(csum_partial); 83EXPORT_SYMBOL(csum_partial);
83EXPORT_SYMBOL(csum_partial_copy_generic); 84EXPORT_SYMBOL(csum_partial_copy_generic);
diff --git a/arch/powerpc/lib/string.S b/arch/powerpc/lib/string.S
index c4c622d8e6ac..49eb1f1a2bb4 100644
--- a/arch/powerpc/lib/string.S
+++ b/arch/powerpc/lib/string.S
@@ -75,6 +75,20 @@ _GLOBAL(strcmp)
75 beq 1b 75 beq 1b
76 blr 76 blr
77 77
78_GLOBAL(strncmp)
79 PPC_LCMPI r5,0
80 beqlr
81 mtctr r5
82 addi r5,r3,-1
83 addi r4,r4,-1
841: lbzu r3,1(r5)
85 cmpwi 1,r3,0
86 lbzu r0,1(r4)
87 subf. r3,r0,r3
88 beqlr 1
89 bdnzt eq,1b
90 blr
91
78_GLOBAL(strlen) 92_GLOBAL(strlen)
79 addi r4,r3,-1 93 addi r4,r3,-1
801: lbzu r0,1(r4) 941: lbzu r0,1(r4)