 a5c4300389
			
		
	
	
	a5c4300389
	
	
	
		
			
			arch/sh/lib/strlen.S:38: ERROR: trailing whitespace Signed-off-by: Andrea Gelmini <andrea.gelmini@gelma.net> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			788 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			788 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* $Id: strlen.S,v 1.2 2001/06/29 14:07:15 gniibe Exp $
 | |
|  *
 | |
|  * "strlen" implementation of SuperH
 | |
|  *
 | |
|  * Copyright (C) 1999  Kaz Kojima
 | |
|  *
 | |
|  */
 | |
| 
 | |
| /* size_t strlen (const char *s)  */
 | |
| 
 | |
| #include <linux/linkage.h>
 | |
| ENTRY(strlen)
 | |
| 	mov	r4,r0
 | |
| 	and	#3,r0
 | |
| 	tst	r0,r0
 | |
| 	bt/s	1f
 | |
| 	 mov	#0,r2
 | |
| 
 | |
| 	add	#-1,r0
 | |
| 	shll2	r0
 | |
| 	shll	r0
 | |
| 	braf	r0
 | |
| 	 nop
 | |
| 
 | |
| 	mov.b	@r4+,r1
 | |
| 	tst	r1,r1
 | |
| 	bt	8f
 | |
| 	add	#1,r2
 | |
| 
 | |
| 	mov.b	@r4+,r1
 | |
| 	tst	r1,r1
 | |
| 	bt	8f
 | |
| 	add	#1,r2
 | |
| 
 | |
| 	mov.b	@r4+,r1
 | |
| 	tst	r1,r1
 | |
| 	bt	8f
 | |
| 	add	#1,r2
 | |
| 
 | |
| 1:
 | |
| 	mov	#0,r3
 | |
| 2:
 | |
| 	mov.l	@r4+,r1
 | |
| 	cmp/str	r3,r1
 | |
| 	bf/s	2b
 | |
| 	 add	#4,r2
 | |
| 
 | |
| 	add	#-4,r2
 | |
| #ifndef __LITTLE_ENDIAN__
 | |
| 	swap.b	r1,r1
 | |
| 	swap.w	r1,r1
 | |
| 	swap.b	r1,r1
 | |
| #endif
 | |
| 	extu.b	r1,r0
 | |
| 	tst	r0,r0
 | |
| 	bt/s	8f
 | |
| 	 shlr8	r1
 | |
| 	add	#1,r2
 | |
| 	extu.b	r1,r0
 | |
| 	tst	r0,r0
 | |
| 	bt/s	8f
 | |
| 	 shlr8	r1
 | |
| 	add	#1,r2
 | |
| 	extu.b	r1,r0
 | |
| 	tst	r0,r0
 | |
| 	bt	8f
 | |
| 	add	#1,r2
 | |
| 8:
 | |
| 	rts
 | |
| 	 mov	r2,r0
 |