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