xref: /openbmc/linux/arch/sparc/lib/ashrdi3.S (revision 4cdb71b6)
1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
288278ca2SAdrian Bunk/*
31da177e4SLinus Torvalds * ashrdi3.S:	The filesystem code creates all kinds of references to
41da177e4SLinus Torvalds *              this little routine on the sparc with gcc.
51da177e4SLinus Torvalds *
61da177e4SLinus Torvalds * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
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(__ashrdi3)
141da177e4SLinus Torvalds	tst	%o2
151da177e4SLinus Torvalds	be	3f
161da177e4SLinus Torvalds	 or	%g0, 32, %g2
171da177e4SLinus Torvalds
181da177e4SLinus Torvalds	sub	%g2, %o2, %g2
191da177e4SLinus Torvalds
201da177e4SLinus Torvalds	tst	%g2
211da177e4SLinus Torvalds	bg	1f
221da177e4SLinus Torvalds	 sra	%o0, %o2, %o4
231da177e4SLinus Torvalds
241da177e4SLinus Torvalds	sra	%o0, 31, %o4
251da177e4SLinus Torvalds	sub	%g0, %g2, %g2
261da177e4SLinus Torvalds	ba	2f
271da177e4SLinus Torvalds	 sra	%o0, %g2, %o5
281da177e4SLinus Torvalds
291da177e4SLinus Torvalds1:
301da177e4SLinus Torvalds	sll	%o0, %g2, %g3
311da177e4SLinus Torvalds	srl	%o1, %o2, %g2
321da177e4SLinus Torvalds	or	%g2, %g3, %o5
331da177e4SLinus Torvalds2:
341da177e4SLinus Torvalds	or	%g0, %o4, %o0
351da177e4SLinus Torvalds	or	%g0, %o5, %o1
361da177e4SLinus Torvalds3:
371da177e4SLinus Torvalds	jmpl	%o7 + 8, %g0
381da177e4SLinus Torvalds	 nop
398695c37dSDavid S. MillerENDPROC(__ashrdi3)
40d3867f04SAl ViroEXPORT_SYMBOL(__ashrdi3)
41