|  | /* | 
|  | * 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 memcmp | 
|  | .type	memcmp, @function | 
|  | .align	1 | 
|  | memcmp: | 
|  | sub	len, 4 | 
|  | brlt	.Lless_than_4 | 
|  |  | 
|  | 1:	ld.w	r8, s1++ | 
|  | ld.w	r9, s2++ | 
|  | cp.w	r8, r9 | 
|  | brne	.Lfound_word | 
|  | sub	len, 4 | 
|  | brge	1b | 
|  |  | 
|  | .Lless_than_4: | 
|  | sub	len, -4 | 
|  | reteq	0 | 
|  |  | 
|  | 1:	ld.ub	r8, s1++ | 
|  | ld.ub	r9, s2++ | 
|  | sub	r8, r9 | 
|  | retne	r8 | 
|  | sub	len, 1 | 
|  | brgt	1b | 
|  |  | 
|  | retal	0 | 
|  |  | 
|  | .Lfound_word: | 
|  | mov	len, 4 | 
|  |  | 
|  | 2:	bfextu	r11, r9, 24, 8 | 
|  | bfextu	r12, r8, 24, 8 | 
|  | sub	r12, r11 | 
|  | retne	r12 | 
|  | lsl	r8, 8 | 
|  | lsl	r9, 8 | 
|  | sub	len, 1 | 
|  | brne	2b | 
|  | retal	r12 | 
|  |  | 
|  | .size	memcmp, . - memcmp | 
|  |  | 
|  | libc_hidden_def(memcmp) | 
|  | #ifdef __UCLIBC_SUSV3_LEGACY__ | 
|  | strong_alias(memcmp,bcmp) | 
|  | #endif |