/* | |
* Simplistic strlen() implementation for SHmedia. | |
* | |
* Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org> | |
*/ | |
.section .text..SHmedia32,"ax" | |
.globl strlen | |
.type strlen,@function | |
.balign 16 | |
strlen: | |
ptabs r18, tr4 | |
/* | |
* Note: We could easily deal with the NULL case here with a simple | |
* sanity check, though it seems that the behavior we want is to fault | |
* in the event that r2 == NULL, so we don't bother. | |
*/ | |
/* beqi r2, 0, tr4 */ ! Sanity check | |
movi -1, r0 | |
pta/l loop, tr0 | |
loop: | |
ld.b r2, 0, r1 | |
addi r2, 1, r2 | |
addi r0, 1, r0 | |
bnei/l r1, 0, tr0 | |
or r0, r63, r2 | |
blink tr4, r63 | |
.size strlen,.-strlen |