strlen.S
632 Bytes
/*
* 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