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