| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | /* * Copyright (C) 2004-2007 Atmel Corporation * * This file is subject to the terms and conditions of the GNU Lesser General * Public License.  See the file "COPYING.LIB" in the main directory of this * archive for more details. */#include <features.h>#define str r12	.text	.global strlen	.type	strlen, @functionstrlen:	mov	r11, r12	mov	r9, str	andl	r9, 3, COH	brne	.Lunaligned_str1:	ld.w	r8, str++	tnbz	r8	brne	1b	sub	r12, r11	bfextu	r9, r8, 24, 8	cp.w	r9, 0	subeq	r12, 4	reteq	r12	bfextu	r9, r8, 16, 8	cp.w	r9, 0	subeq	r12, 3	reteq	r12	bfextu	r9, r8, 8, 8	cp.w	r9, 0	subeq	r12, 2	reteq	r12	sub	r12, 1	retal	r12.Lunaligned_str:	add	pc, pc, r9 << 3	sub	r0, r0, 0	/* 4-byte nop */	ld.ub	r8, str++	sub	r8, r8, 0	breq	1f	ld.ub	r8, str++	sub	r8, r8, 0	breq	1f	ld.ub	r8, str++	sub	r8, r8, 0	brne	1b1:	sub	r12, 1	sub	r12, r11	retal	r12	.size	strlen, . - strlenlibc_hidden_def(strlen)
 |