1 /* Copyright 1995, 1996, 1998, 1999, 2000, 200 !! 1 /* $Id: ashrdi3.S,v 1.4 1999/11/19 04:11:49 davem Exp $ 2 Free Software Foundation, Inc. !! 2 * ashrdi3.S: The filesystem code creates all kinds of references to 3 !! 3 * this little routine on the sparc with gcc. 4 This file is free software; you can redistribu !! 4 * 5 under the terms of the GNU General Public Lice !! 5 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) 6 Free Software Foundation; either version 2, or !! 6 */ 7 later version. !! 7 8 !! 8 #include <asm/cprefix.h> 9 In addition to the permissions in the GNU Gene !! 9 10 Free Software Foundation gives you unlimited p !! 10 .text 11 compiled version of this file into combination !! 11 .align 4 12 and to distribute those combinations without a !! 12 .globl C_LABEL(__ashrdi3) 13 from the use of this file. (The General Publi !! 13 C_LABEL(__ashrdi3): 14 do apply in other respects; for example, they !! 14 tst %o2 15 the file, and distribution when not linked int !! 15 be 3f 16 executable.) !! 16 or %g0, 32, %g2 17 !! 17 18 This file is distributed in the hope that it w !! 18 sub %g2, %o2, %g2 19 WITHOUT ANY WARRANTY; without even the implied !! 19 20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PU !! 20 tst %g2 21 General Public License for more details. !! 21 bg 1f 22 !! 22 sra %o0, %o2, %o4 23 You should have received a copy of the GNU Gen !! 23 24 along with this program; see the file COPYING. !! 24 sra %o0, 31, %o4 25 the Free Software Foundation, 51 Franklin Stre !! 25 sub %g0, %g2, %g2 26 Boston, MA 02110-1301, USA. */ !! 26 ba 2f 27 !! 27 sra %o0, %g2, %o5 28 !! 28 29 #include <linux/linkage.h> !! 29 1: 30 #include <asm/assembler.h> !! 30 sll %o0, %g2, %g3 31 !! 31 srl %o1, %o2, %g2 32 #ifdef __ARMEB__ !! 32 or %g2, %g3, %o5 33 #define al r1 !! 33 2: 34 #define ah r0 !! 34 or %g0, %o4, %o0 35 #else !! 35 or %g0, %o5, %o1 36 #define al r0 !! 36 3: 37 #define ah r1 !! 37 jmpl %o7 + 8, %g0 38 #endif !! 38 nop 39 << 40 ENTRY(__ashrdi3) << 41 ENTRY(__aeabi_lasr) << 42 << 43 subs r3, r2, #32 << 44 rsb ip, r2, #32 << 45 movmi al, al, lsr r2 << 46 movpl al, ah, asr r3 << 47 ARM( orrmi al, al, ah, lsl ip ) << 48 THUMB( lslmi r3, ah, ip ) << 49 THUMB( orrmi al, al, r3 ) << 50 mov ah, ah, asr r2 << 51 ret lr << 52 << 53 ENDPROC(__ashrdi3) << 54 ENDPROC(__aeabi_lasr) <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.