xref: /OK3568_Linux_fs/kernel/arch/sparc/lib/ashldi3.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * ashldi3.S:	GCC emits these for certain drivers playing
4*4882a593Smuzhiyun *		with long longs.
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun * Copyright (C) 1999 David S. Miller (davem@redhat.com)
7*4882a593Smuzhiyun */
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun#include <linux/linkage.h>
10*4882a593Smuzhiyun#include <asm/export.h>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	.text
13*4882a593SmuzhiyunENTRY(__ashldi3)
14*4882a593Smuzhiyun	cmp	%o2, 0
15*4882a593Smuzhiyun	be	9f
16*4882a593Smuzhiyun	 mov	0x20, %g2
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun	sub	%g2, %o2, %g2
19*4882a593Smuzhiyun	cmp	%g2, 0
20*4882a593Smuzhiyun	bg	7f
21*4882a593Smuzhiyun	 sll	%o0, %o2, %g3
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun	neg	%g2
24*4882a593Smuzhiyun	clr	%o5
25*4882a593Smuzhiyun	b	8f
26*4882a593Smuzhiyun	 sll	%o1, %g2, %o4
27*4882a593Smuzhiyun7:
28*4882a593Smuzhiyun	srl	%o1, %g2, %g2
29*4882a593Smuzhiyun	sll	%o1, %o2, %o5
30*4882a593Smuzhiyun	or	%g3, %g2, %o4
31*4882a593Smuzhiyun8:
32*4882a593Smuzhiyun	mov	%o4, %o0
33*4882a593Smuzhiyun	mov	%o5, %o1
34*4882a593Smuzhiyun9:
35*4882a593Smuzhiyun	retl
36*4882a593Smuzhiyun	 nop
37*4882a593SmuzhiyunENDPROC(__ashldi3)
38*4882a593SmuzhiyunEXPORT_SYMBOL(__ashldi3)
39