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