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