Paul Mundt | 4466b20 | 2008-12-12 16:34:44 +0900 | [diff] [blame] | 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 |