xref: /OK3568_Linux_fs/kernel/arch/sparc/lib/lshrdi3.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun#include <linux/linkage.h>
3*4882a593Smuzhiyun#include <asm/export.h>
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunENTRY(__lshrdi3)
6*4882a593Smuzhiyun	cmp	%o2, 0
7*4882a593Smuzhiyun	be	3f
8*4882a593Smuzhiyun	 mov	0x20, %g2
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun	sub	%g2, %o2, %g2
11*4882a593Smuzhiyun	cmp	%g2, 0
12*4882a593Smuzhiyun	bg	1f
13*4882a593Smuzhiyun	 srl	%o0, %o2, %o4
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	clr	%o4
16*4882a593Smuzhiyun	neg	%g2
17*4882a593Smuzhiyun	b	2f
18*4882a593Smuzhiyun	 srl	%o0, %g2, %o5
19*4882a593Smuzhiyun1:
20*4882a593Smuzhiyun	sll  %o0, %g2, %g3
21*4882a593Smuzhiyun	srl  %o1, %o2, %g2
22*4882a593Smuzhiyun	or  %g2, %g3, %o5
23*4882a593Smuzhiyun2:
24*4882a593Smuzhiyun	mov  %o4, %o0
25*4882a593Smuzhiyun	mov  %o5, %o1
26*4882a593Smuzhiyun3:
27*4882a593Smuzhiyun	retl
28*4882a593Smuzhiyun	 nop
29*4882a593SmuzhiyunENDPROC(__lshrdi3)
30*4882a593SmuzhiyunEXPORT_SYMBOL(__lshrdi3)
31