Linux 4.13.16
[linux/fpc-iii.git] / arch / sh / lib64 / strlen.S
blobcbc0d912e5f35c733a7d565802e2b446c987be24
1 /*
2  * Simplistic strlen() implementation for SHmedia.
3  *
4  * Copyright (C) 2003  Paul Mundt <lethal@linux-sh.org>
5  */
7         .section .text..SHmedia32,"ax"
8         .globl  strlen
9         .type   strlen,@function
11         .balign 16
12 strlen:
13         ptabs   r18, tr4
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
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
30         or      r0, r63, r2
31         blink   tr4, r63
33         .size   strlen,.-strlen