arm: lib: Sync libgcc shift operations
[oweals/u-boot.git] / arch / arm / lib / ashrdi3.S
1 /* Copyright 1995, 1996, 1998, 1999, 2000, 2003, 2004, 2005
2    Free Software Foundation, Inc.
3
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6
7 #include <linux/linkage.h>
8 #include <asm/assembler.h>
9
10 #ifdef __ARMEB__
11 #define al r1
12 #define ah r0
13 #else
14 #define al r0
15 #define ah r1
16 #endif
17
18 ENTRY(__ashrdi3)
19 ENTRY(__aeabi_lasr)
20
21         subs    r3, r2, #32
22         rsb     ip, r2, #32
23         movmi   al, al, lsr r2
24         movpl   al, ah, asr 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, asr r2
29         ret     lr
30
31 ENDPROC(__ashrdi3)
32 ENDPROC(__aeabi_lasr)