| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | /* * 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 s1 r12#define s2 r11#define len r10       .text       .global strcmp       .type   strcmp, @function       .align  1strcmp:       mov     r8, 3       tst     s1, r8       brne    .Lunaligned_s1       tst     s2, r8       brne    .Lunaligned_s21:     ld.w    r8, s1++       ld.w    r9, s2++       cp.w    r8, r9       brne    2f       tnbz    r8       brne    1b       retal   02:     bfextu  r12, r8, 24, 8       bfextu  r11, r9, 24, 8       sub     r12, r11       retne   r12       cp.w    r11, 0       reteq   0       bfextu  r12, r8, 16, 8       bfextu  r11, r9, 16, 8       sub     r12, r11       retne   r12       cp.w    r11, 0       reteq   0       bfextu  r12, r8, 8, 8       bfextu  r11, r9, 8, 8       sub     r12, r11       retne   r12       cp.w    r11, 0       reteq   0       bfextu  r12, r8, 0, 8       bfextu  r11, r9, 0, 8       sub     r12, r11       retal   r12.Lunaligned_s1:3:     tst     s1, r8       breq    4f       ld.ub   r10, s1++       ld.ub   r9, s2++       sub     r10, r9       retne   r10       cp.w    r9, 0       brne    3b       retal   r104:     tst     s2, r8       breq    1b.Lunaligned_s2:       /*        * s1 and s2 can't both be aligned, and unaligned word loads        * can trigger spurious exceptions if we cross a page boundary.        * Do it the slow way...        */1:     ld.ub   r8, s1++       ld.ub   r9, s2++       sub     r8, r9       retne   r8       cp.w    r9, 0       brne    1b       retal   0       .size   strcmp, . - strcmplibc_hidden_def(strcmp)#ifndef __UCLIBC_HAS_LOCALE__strong_alias(strcmp, strcoll)libc_hidden_def(strcoll)#endif
 |