xref: /openbmc/u-boot/arch/arm/lib/lshrdi3.S (revision 407b5b956a2e0facf6668fc8b295f4be9205c83e)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
3    Free Software Foundation, Inc.
4  */
5 
6 #include <linux/linkage.h>
7 #include <asm/assembler.h>
8 
9 #ifdef __ARMEB__
10 #define al r1
11 #define ah r0
12 #else
13 #define al r0
14 #define ah r1
15 #endif
16 
17 .pushsection .text.__lshldi3, "ax"
18 ENTRY(__lshrdi3)
19 ENTRY(__aeabi_llsr)
20 
21 	subs	r3, r2, #32
22 	rsb	ip, r2, #32
23 	movmi	al, al, lsr r2
24 	movpl	al, ah, lsr r3
25  ARM(	orrmi	al, al, ah, lsl ip	)
26  THUMB(	lslmi	r3, ah, ip		)
27  THUMB(	orrmi	al, al, r3		)
28 	mov	ah, ah, lsr r2
29 	ret	lr
30 
31 ENDPROC(__lshrdi3)
32 ENDPROC(__aeabi_llsr)
33 .popsection
34