Module Name:    src
Committed By:   matt
Date:           Mon Aug 19 02:13:14 UTC 2013

Modified Files:
        src/common/lib/libc/arch/arm/string: strlen_naive.S

Log Message:
Thumbify


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/string/strlen_naive.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libc/arch/arm/string/strlen_naive.S
diff -u src/common/lib/libc/arch/arm/string/strlen_naive.S:1.6 src/common/lib/libc/arch/arm/string/strlen_naive.S:1.7
--- src/common/lib/libc/arch/arm/string/strlen_naive.S:1.6	Mon Aug 19 02:11:03 2013
+++ src/common/lib/libc/arch/arm/string/strlen_naive.S	Mon Aug 19 02:13:13 2013
@@ -28,16 +28,26 @@
  */
 #include <machine/asm.h>
 
-RCSID("$NetBSD: strlen_naive.S,v 1.6 2013/08/19 02:11:03 matt Exp $")
+RCSID("$NetBSD: strlen_naive.S,v 1.7 2013/08/19 02:13:13 matt Exp $")
 
 #ifdef STRNLEN
 /* LINTSTUB: size_t strnlen(const char *, size_t) */
 ENTRY(strnlen)
 	adds	r3, r0, #1	/* start of src + NUL */
+#ifdef __thumb__
+	adds	r2, r0, r1	/* &src[maxlen] */
+	mov	ip, r2
+#else
 	adds	ip, r0, r1	/* &src[maxlen] */
+#endif
 1:	cmp	r0, ip		/* is this of string? */
 	beq	2f		/*   yes it is */
+#ifdef __thumb__
+	ldrb	r2, [r0]	/* read a byte */
+	adds	r0, r0, #1	/* advance to next byte */
+#else
 	ldrb	r2, [r0], #1	/* read a byte */
+#endif
 	cmp	r2, #0		/* is it a NUL? */
 	bne	1b		/*   no, get next byte */
 	subs	r0, r0, r3	/* get difference between start and end */
@@ -50,7 +60,12 @@ END(strnlen)
 ENTRY(strlen)
 	adds	r2, r0, #1	/* start of src + NUL */
 1:
+#ifdef __thumb__
+	ldrb	r3, [r0]	/* read a byte */
+	adds	r0, r0, #1
+#else
 	ldrb	r3, [r0], #1	/* read a byte */
+#endif
 	cmp	r3, #0		/* is it a NUL? */
 	bne	1b		/*   no, get next byte */
 	subs	r0, r0, r2	/* return difference between start and end */

Reply via email to