]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blob - arch/sparc/lib/ashrdi3.S
Merge remote-tracking branches 'asoc/topic/ac97', 'asoc/topic/ac97-mfd', 'asoc/topic...
[mirror_ubuntu-focal-kernel.git] / arch / sparc / lib / ashrdi3.S
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)