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