blob: 05dfda9f500519636502efe5471a168fe78d07bd [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Adrian Bunk88278ca2008-05-19 16:53:02 -07002/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 * 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
David S. Miller8695c372012-05-11 20:33:22 -07009#include <linux/linkage.h>
Al Virod3867f042016-01-16 21:39:30 -050010#include <asm/export.h>
David S. Miller8695c372012-05-11 20:33:22 -070011
Linus Torvalds1da177e2005-04-16 15:20:36 -070012 .text
David S. Miller8695c372012-05-11 20:33:22 -070013ENTRY(__ashrdi3)
Linus Torvalds1da177e2005-04-16 15:20:36 -070014 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
291:
30 sll %o0, %g2, %g3
31 srl %o1, %o2, %g2
32 or %g2, %g3, %o5
332:
34 or %g0, %o4, %o0
35 or %g0, %o5, %o1
363:
37 jmpl %o7 + 8, %g0
38 nop
David S. Miller8695c372012-05-11 20:33:22 -070039ENDPROC(__ashrdi3)
Al Virod3867f042016-01-16 21:39:30 -050040EXPORT_SYMBOL(__ashrdi3)