1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * ashrdi3.S:	The filesystem code creates all kinds of references to
4  *              this little routine on the sparc with gcc.
5  *
6  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
7  */
8 
9 #include <linux/linkage.h>
10 #include <asm/export.h>
11 
12 	.text
13 ENTRY(__ashrdi3)
14 	tst	%o2
15 	be	3f
16 	 or	%g0, 32, %g2
17 
18 	sub	%g2, %o2, %g2
19 
20 	tst	%g2
21 	bg	1f
22 	 sra	%o0, %o2, %o4
23 
24 	sra	%o0, 31, %o4
25 	sub	%g0, %g2, %g2
26 	ba	2f
27 	 sra	%o0, %g2, %o5
28 
29 1:
30 	sll	%o0, %g2, %g3
31 	srl	%o1, %o2, %g2
32 	or	%g2, %g3, %o5
33 2:
34 	or	%g0, %o4, %o0
35 	or	%g0, %o5, %o1
36 3:
37 	jmpl	%o7 + 8, %g0
38 	 nop
39 ENDPROC(__ashrdi3)
40 EXPORT_SYMBOL(__ashrdi3)
41