GNU Linux-libre 6.1.91-gnu
[releases.git] / arch / xtensa / lib / ashrdi3.S
1 /* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0 */
2 #include <linux/linkage.h>
3 #include <asm/asmmacro.h>
4 #include <asm/core.h>
5
6 #ifdef __XTENSA_EB__
7 #define uh a2
8 #define ul a3
9 #else
10 #define uh a3
11 #define ul a2
12 #endif /* __XTENSA_EB__ */
13
14 ENTRY(__ashrdi3)
15
16         abi_entry_default
17         ssr     a4
18         bgei    a4, 32, .Lhigh_only
19         src     ul, uh, ul
20         sra     uh, uh
21         abi_ret_default
22
23 .Lhigh_only:
24         sra     ul, uh
25         srai    uh, uh, 31
26         abi_ret_default
27
28 ENDPROC(__ashrdi3)