powerpc: boot: add strrchr function

Message ID 20180301152654.29275-1-robh@kernel.org
State New
Headers show
Series
  • powerpc: boot: add strrchr function
Related show

Commit Message

Rob Herring March 1, 2018, 3:26 p.m.
libfdt gained a new dependency on strrchr, so copy the implementation
from lib/string.c. Most of the string functions are in assembly, but
stdio.c already has strnlen, so add strrchr there.

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Rob Herring <robh@kernel.org>

---
Please ack. This is a dependency for dtc/libfdt sync with upstream.

 arch/powerpc/boot/stdio.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

-- 
2.14.1

Comments

Michael Ellerman March 2, 2018, 12:17 p.m. | #1
Rob Herring <robh@kernel.org> writes:

> libfdt gained a new dependency on strrchr, so copy the implementation

> from lib/string.c. Most of the string functions are in assembly, but

> stdio.c already has strnlen, so add strrchr there.

>

> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> Cc: Paul Mackerras <paulus@samba.org>

> Cc: Michael Ellerman <mpe@ellerman.id.au>

> Signed-off-by: Rob Herring <robh@kernel.org>

> ---

> Please ack. This is a dependency for dtc/libfdt sync with upstream.


Yeah seems fine. At some point we should try and duplicate less code in
boot, but now is not that time.

Acked-by: Michael Ellerman <mpe@ellerman.id.au>


cheers

> diff --git a/arch/powerpc/boot/stdio.c b/arch/powerpc/boot/stdio.c

> index a701261b1781..98042eff7b26 100644

> --- a/arch/powerpc/boot/stdio.c

> +++ b/arch/powerpc/boot/stdio.c

> @@ -21,6 +21,16 @@ size_t strnlen(const char * s, size_t count)

>  	return sc - s;

>  }

>  

> +char *strrchr(const char *s, int c)

> +{

> +	const char *last = NULL;

> +	do {

> +		if (*s == (char)c)

> +			last = s;

> +	} while (*s++);

> +	return (char *)last;

> +}

> +

>  #ifdef __powerpc64__

>  

>  # define do_div(n, base) ({						\

> -- 

> 2.14.1

Patch

diff --git a/arch/powerpc/boot/stdio.c b/arch/powerpc/boot/stdio.c
index a701261b1781..98042eff7b26 100644
--- a/arch/powerpc/boot/stdio.c
+++ b/arch/powerpc/boot/stdio.c
@@ -21,6 +21,16 @@  size_t strnlen(const char * s, size_t count)
 	return sc - s;
 }
 
+char *strrchr(const char *s, int c)
+{
+	const char *last = NULL;
+	do {
+		if (*s == (char)c)
+			last = s;
+	} while (*s++);
+	return (char *)last;
+}
+
 #ifdef __powerpc64__
 
 # define do_div(n, base) ({						\