mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 20:06:46 +00:00 
			
		
		
		
	 4466b20cfc
			
		
	
	
		4466b20cfc
		
	
	
	
	
		
			
			Adopted from the uClibc optimized string versions. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
		
			
				
	
	
		
			34 lines
		
	
	
		
			632 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			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
 |