xref: /linux/arch/sparc/lib/muldi3.S (revision be239684b18e1cdcafcf8c7face4a2f562c745ad)
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
3
4This file is part of GNU CC.
5
6 */
7
8#include <linux/export.h>
9	.text
10	.align 4
11	.globl __muldi3
12__muldi3:
13	save  %sp, -104, %sp
14	wr  %g0, %i1, %y
15	sra  %i3, 0x1f, %g2
16	and  %i1, %g2, %g2
17	andcc  %g0, 0, %g1
18	mulscc  %g1, %i3, %g1
19	mulscc  %g1, %i3, %g1
20	mulscc  %g1, %i3, %g1
21	mulscc  %g1, %i3, %g1
22	mulscc  %g1, %i3, %g1
23	mulscc  %g1, %i3, %g1
24	mulscc  %g1, %i3, %g1
25	mulscc  %g1, %i3, %g1
26	mulscc  %g1, %i3, %g1
27	mulscc  %g1, %i3, %g1
28	mulscc  %g1, %i3, %g1
29	mulscc  %g1, %i3, %g1
30	mulscc  %g1, %i3, %g1
31	mulscc  %g1, %i3, %g1
32	mulscc  %g1, %i3, %g1
33	mulscc  %g1, %i3, %g1
34	mulscc  %g1, %i3, %g1
35	mulscc  %g1, %i3, %g1
36	mulscc  %g1, %i3, %g1
37	mulscc  %g1, %i3, %g1
38	mulscc  %g1, %i3, %g1
39	mulscc  %g1, %i3, %g1
40	mulscc  %g1, %i3, %g1
41	mulscc  %g1, %i3, %g1
42	mulscc  %g1, %i3, %g1
43	mulscc  %g1, %i3, %g1
44	mulscc  %g1, %i3, %g1
45	mulscc  %g1, %i3, %g1
46	mulscc  %g1, %i3, %g1
47	mulscc  %g1, %i3, %g1
48	mulscc  %g1, %i3, %g1
49	mulscc  %g1, %i3, %g1
50	mulscc  %g1, 0, %g1
51	add  %g1, %g2, %l2
52	rd  %y, %o1
53	mov  %o1, %l3
54	mov  %i1, %o0
55	mov  %i2, %o1
56	umul %o0, %o1, %o0
57	mov  %o0, %l0
58	mov  %i0, %o0
59	mov  %i3, %o1
60	umul %o0, %o1, %o0
61	add  %l0, %o0, %l0
62	mov  %l2, %i0
63	add  %l2, %l0, %i0
64	ret
65	restore  %g0, %l3, %o1
66EXPORT_SYMBOL(__muldi3)
67