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 */