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