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/linkage.h>
10 #include <asm/export.h>
11 
12 	.text
13 ENTRY(__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
27 7:
28 	srl	%o1, %g2, %g2
29 	sll	%o1, %o2, %o5
30 	or	%g3, %g2, %o4
31 8:
32 	mov	%o4, %o0
33 	mov	%o5, %o1
34 9:
35 	retl
36 	 nop
37 ENDPROC(__ashldi3)
38 EXPORT_SYMBOL(__ashldi3)
39