xref: /openbmc/linux/arch/sparc/lib/muldi3.S (revision 1da177e4)
11da177e4SLinus Torvalds/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
21da177e4SLinus Torvalds
31da177e4SLinus TorvaldsThis file is part of GNU CC.
41da177e4SLinus Torvalds
51da177e4SLinus TorvaldsGNU CC is free software; you can redistribute it and/or modify
61da177e4SLinus Torvaldsit under the terms of the GNU General Public License as published by
71da177e4SLinus Torvaldsthe Free Software Foundation; either version 2, or (at your option)
81da177e4SLinus Torvaldsany later version.
91da177e4SLinus Torvalds
101da177e4SLinus TorvaldsGNU CC is distributed in the hope that it will be useful,
111da177e4SLinus Torvaldsbut WITHOUT ANY WARRANTY; without even the implied warranty of
121da177e4SLinus TorvaldsMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
131da177e4SLinus TorvaldsGNU General Public License for more details.
141da177e4SLinus Torvalds
151da177e4SLinus TorvaldsYou should have received a copy of the GNU General Public License
161da177e4SLinus Torvaldsalong with GNU CC; see the file COPYING.  If not, write to
171da177e4SLinus Torvaldsthe Free Software Foundation, 59 Temple Place - Suite 330,
181da177e4SLinus TorvaldsBoston, MA 02111-1307, USA.  */
191da177e4SLinus Torvalds
201da177e4SLinus Torvalds	.text
211da177e4SLinus Torvalds	.align 4
221da177e4SLinus Torvalds	.globl __muldi3
231da177e4SLinus Torvalds__muldi3:
241da177e4SLinus Torvalds	save  %sp, -104, %sp
251da177e4SLinus Torvalds	wr  %g0, %i1, %y
261da177e4SLinus Torvalds	sra  %i3, 0x1f, %g2
271da177e4SLinus Torvalds	and  %i1, %g2, %g2
281da177e4SLinus Torvalds	andcc  %g0, 0, %g1
291da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
301da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
311da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
321da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
331da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
341da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
351da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
361da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
371da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
381da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
391da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
401da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
411da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
421da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
431da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
441da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
451da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
461da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
471da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
481da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
491da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
501da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
511da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
521da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
531da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
541da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
551da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
561da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
571da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
581da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
591da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
601da177e4SLinus Torvalds	mulscc  %g1, %i3, %g1
611da177e4SLinus Torvalds	mulscc  %g1, 0, %g1
621da177e4SLinus Torvalds	add  %g1, %g2, %l2
631da177e4SLinus Torvalds	rd  %y, %o1
641da177e4SLinus Torvalds	mov  %o1, %l3
651da177e4SLinus Torvalds	mov  %i1, %o0
661da177e4SLinus Torvalds	call  .umul
671da177e4SLinus Torvalds	mov  %i2, %o1
681da177e4SLinus Torvalds	mov  %o0, %l0
691da177e4SLinus Torvalds	mov  %i0, %o0
701da177e4SLinus Torvalds	call  .umul
711da177e4SLinus Torvalds	mov  %i3, %o1
721da177e4SLinus Torvalds	add  %l0, %o0, %l0
731da177e4SLinus Torvalds	mov  %l2, %i0
741da177e4SLinus Torvalds	add  %l2, %l0, %i0
751da177e4SLinus Torvalds	ret
761da177e4SLinus Torvalds	restore  %g0, %l3, %o1
77