Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec...
[linux-2.6] / arch / sh / lib64 / strlen.S
1 /*
2  * Simplistic strlen() implementation for SHmedia.
3  *
4  * Copyright (C) 2003  Paul Mundt <lethal@linux-sh.org>
5  */
6
7         .section .text..SHmedia32,"ax"
8         .globl  strlen
9         .type   strlen,@function
10
11         .balign 16
12 strlen:
13         ptabs   r18, tr4
14
15         /*
16          * Note: We could easily deal with the NULL case here with a simple
17          * sanity check, though it seems that the behavior we want is to fault
18          * in the event that r2 == NULL, so we don't bother.
19          */
20 /*      beqi    r2, 0, tr4 */   ! Sanity check
21
22         movi    -1, r0
23         pta/l   loop, tr0
24 loop:
25         ld.b    r2, 0, r1
26         addi    r2, 1, r2
27         addi    r0, 1, r0
28         bnei/l  r1, 0, tr0
29
30         or      r0, r63, r2
31         blink   tr4, r63
32
33         .size   strlen,.-strlen