[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>
This commit is contained in:
Родитель
768cc2d3b2
Коммит
0ae0b54565
|
@ -24,24 +24,4 @@
|
||||||
#define be64_to_cpu(x) (x)
|
#define be64_to_cpu(x) (x)
|
||||||
#define cpu_to_be64(x) (x)
|
#define cpu_to_be64(x) (x)
|
||||||
|
|
||||||
static inline int strncmp(const char *cs, const char *ct, size_t count)
|
|
||||||
{
|
|
||||||
signed char __res = 0;
|
|
||||||
|
|
||||||
while (count) {
|
|
||||||
if ((__res = *cs - *ct++) != 0 || !*cs++)
|
|
||||||
break;
|
|
||||||
count--;
|
|
||||||
}
|
|
||||||
return __res;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline char *strchr(const char *s, int c)
|
|
||||||
{
|
|
||||||
for (; *s != (char)c; ++s)
|
|
||||||
if (*s == '\0')
|
|
||||||
return NULL;
|
|
||||||
return (char *)s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _PPC_BOOT_FLATDEVTREE_ENV_H_ */
|
#endif /* _PPC_BOOT_FLATDEVTREE_ENV_H_ */
|
||||||
|
|
|
@ -49,6 +49,17 @@ strcat:
|
||||||
bne 1b
|
bne 1b
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
.globl strchr
|
||||||
|
strchr:
|
||||||
|
addi r3,r3,-1
|
||||||
|
1: lbzu r0,1(r3)
|
||||||
|
cmpw 0,r0,r4
|
||||||
|
beqlr
|
||||||
|
cmpwi 0,r0,0
|
||||||
|
bne 1b
|
||||||
|
li r3,0
|
||||||
|
blr
|
||||||
|
|
||||||
.globl strcmp
|
.globl strcmp
|
||||||
strcmp:
|
strcmp:
|
||||||
addi r5,r3,-1
|
addi r5,r3,-1
|
||||||
|
@ -61,6 +72,19 @@ strcmp:
|
||||||
beq 1b
|
beq 1b
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
.globl strncmp
|
||||||
|
strncmp:
|
||||||
|
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
|
||||||
|
|
||||||
.globl strlen
|
.globl strlen
|
||||||
strlen:
|
strlen:
|
||||||
addi r4,r3,-1
|
addi r4,r3,-1
|
||||||
|
|
|
@ -5,7 +5,9 @@
|
||||||
extern char *strcpy(char *dest, const char *src);
|
extern char *strcpy(char *dest, const char *src);
|
||||||
extern char *strncpy(char *dest, const char *src, size_t n);
|
extern char *strncpy(char *dest, const char *src, size_t n);
|
||||||
extern char *strcat(char *dest, const char *src);
|
extern char *strcat(char *dest, const char *src);
|
||||||
|
extern char *strchr(const char *s, int c);
|
||||||
extern int strcmp(const char *s1, const char *s2);
|
extern int strcmp(const char *s1, const char *s2);
|
||||||
|
extern int strncmp(const char *s1, const char *s2, size_t n);
|
||||||
extern size_t strlen(const char *s);
|
extern size_t strlen(const char *s);
|
||||||
extern size_t strnlen(const char *s, size_t count);
|
extern size_t strnlen(const char *s, size_t count);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче