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