Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
4466b20c PM |
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 |