/* libgcc routines for 68000 w/o floating-point hardware. Copyright (C) 1994-2019 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* Use this one for any 680x0; assumes no floating point hardware. The trailing " '" appearing on some lines is for ANSI preprocessors. Yuk. Some of this code comes from MINIX, via the folks at ericsson. D. V. Henkel-Wallace (gumby@cygnus.com) Fete Bastille, 1992 */ .text .globl __mulsi3 __mulsi3: move.w 4(%sp), %d0 /* x0 -> d0 */ mulu.w 10(%sp), %d0 /* x0*y1 */ move.w 6(%sp), %d1 /* x1 -> d1 */ mulu.w 8(%sp), %d1 /* x1*y0 */ add.w %d1, %d0 swap %d0 clr.w %d0 move.w 6(%sp), %d1 /* x1 -> d1 */ mulu.w 10(%sp), %d1 /* x1*y1 */ add.l %d1, %d0 rts