| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * 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 |