xref: /openbmc/linux/arch/sparc/lib/ashldi3.S (revision 4cdb71b6)
1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
288278ca2SAdrian Bunk/*
31da177e4SLinus Torvalds * ashldi3.S:	GCC emits these for certain drivers playing
41da177e4SLinus Torvalds *		with long longs.
51da177e4SLinus Torvalds *
61da177e4SLinus Torvalds * Copyright (C) 1999 David S. Miller (davem@redhat.com)
71da177e4SLinus Torvalds */
81da177e4SLinus Torvalds
9*4cdb71b6SMasahiro Yamada#include <linux/export.h>
108695c37dSDavid S. Miller#include <linux/linkage.h>
118695c37dSDavid S. Miller
121da177e4SLinus Torvalds	.text
138695c37dSDavid S. MillerENTRY(__ashldi3)
141da177e4SLinus Torvalds	cmp	%o2, 0
151da177e4SLinus Torvalds	be	9f
161da177e4SLinus Torvalds	 mov	0x20, %g2
171da177e4SLinus Torvalds
181da177e4SLinus Torvalds	sub	%g2, %o2, %g2
191da177e4SLinus Torvalds	cmp	%g2, 0
201da177e4SLinus Torvalds	bg	7f
211da177e4SLinus Torvalds	 sll	%o0, %o2, %g3
221da177e4SLinus Torvalds
231da177e4SLinus Torvalds	neg	%g2
241da177e4SLinus Torvalds	clr	%o5
251da177e4SLinus Torvalds	b	8f
261da177e4SLinus Torvalds	 sll	%o1, %g2, %o4
271da177e4SLinus Torvalds7:
281da177e4SLinus Torvalds	srl	%o1, %g2, %g2
291da177e4SLinus Torvalds	sll	%o1, %o2, %o5
301da177e4SLinus Torvalds	or	%g3, %g2, %o4
311da177e4SLinus Torvalds8:
321da177e4SLinus Torvalds	mov	%o4, %o0
331da177e4SLinus Torvalds	mov	%o5, %o1
341da177e4SLinus Torvalds9:
351da177e4SLinus Torvalds	retl
361da177e4SLinus Torvalds	 nop
378695c37dSDavid S. MillerENDPROC(__ashldi3)
38d3867f04SAl ViroEXPORT_SYMBOL(__ashldi3)
39