Commit | Line | Data |
---|---|---|
4466b20c PM |
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 |