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