Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[POWERPC] Move bootwrapper's strchr() and strncmp() from .h to string.S

Currently the bootwrapper has implementations of strchr() and
strncmp(), but they're inlines in flatdevtree_env.h, rather than in
string.S with all the rest of the string functions. This moves
them to string.S.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>

authored by

David Gibson and committed by
Paul Mackerras
0ae0b545 768cc2d3

+26 -20
-20
arch/powerpc/boot/flatdevtree_env.h
··· 24 24 #define be64_to_cpu(x) (x) 25 25 #define cpu_to_be64(x) (x) 26 26 27 - static inline int strncmp(const char *cs, const char *ct, size_t count) 28 - { 29 - signed char __res = 0; 30 - 31 - while (count) { 32 - if ((__res = *cs - *ct++) != 0 || !*cs++) 33 - break; 34 - count--; 35 - } 36 - return __res; 37 - } 38 - 39 - static inline char *strchr(const char *s, int c) 40 - { 41 - for (; *s != (char)c; ++s) 42 - if (*s == '\0') 43 - return NULL; 44 - return (char *)s; 45 - } 46 - 47 27 #endif /* _PPC_BOOT_FLATDEVTREE_ENV_H_ */
+24
arch/powerpc/boot/string.S
··· 49 49 bne 1b 50 50 blr 51 51 52 + .globl strchr 53 + strchr: 54 + addi r3,r3,-1 55 + 1: lbzu r0,1(r3) 56 + cmpw 0,r0,r4 57 + beqlr 58 + cmpwi 0,r0,0 59 + bne 1b 60 + li r3,0 61 + blr 62 + 52 63 .globl strcmp 53 64 strcmp: 54 65 addi r5,r3,-1 ··· 70 59 subf. r3,r0,r3 71 60 beqlr 1 72 61 beq 1b 62 + blr 63 + 64 + .globl strncmp 65 + strncmp: 66 + mtctr r5 67 + addi r5,r3,-1 68 + addi r4,r4,-1 69 + 1: lbzu r3,1(r5) 70 + cmpwi 1,r3,0 71 + lbzu r0,1(r4) 72 + subf. r3,r0,r3 73 + beqlr 1 74 + bdnzt eq,1b 73 75 blr 74 76 75 77 .globl strlen
+2
arch/powerpc/boot/string.h
··· 5 5 extern char *strcpy(char *dest, const char *src); 6 6 extern char *strncpy(char *dest, const char *src, size_t n); 7 7 extern char *strcat(char *dest, const char *src); 8 + extern char *strchr(const char *s, int c); 8 9 extern int strcmp(const char *s1, const char *s2); 10 + extern int strncmp(const char *s1, const char *s2, size_t n); 9 11 extern size_t strlen(const char *s); 10 12 extern size_t strnlen(const char *s, size_t count); 11 13