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/export.h>
10#include <linux/linkage.h>
11
12 .text
13ENTRY(__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
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
39ENDPROC(__ashrdi3)
40EXPORT_SYMBOL(__ashrdi3)
41

source code of linux/arch/sparc/lib/ashrdi3.S