linux_dsm_epyc7002/arch/sh/lib64/strlen.S
Paul Mundt 4466b20cfc sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen().
Adopted from the uClibc optimized string versions.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2008-12-22 18:44:05 +09:00

34 lines
632 B
ArmAsm

/*
* 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