summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/com32/lib/libgcc/__muldi3.S
blob: 648a88adf01e3eb96c1afb2d18be948160757526 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * arch/i386/libgcc/__muldi3.S
 *
 * 64*64 = 64 bit unsigned multiplication
 */

	.text
	.align 4
	.globl __muldi3
	.type __muldi3,@function
__muldi3:
	push  %esi
#ifndef REGPARM
	movl  8(%esp),%eax
	movl  %eax,%esi
	movl  16(%esp),%ecx
	mull  %ecx
	imull 12(%esp),%ecx
	imull 20(%esp),%esi
	addl  %ecx,%edx
	addl  %esi,%edx
#else
	movl  %eax,%esi
	push  %edx
	mull  %ecx
	imull 8(%esp),%esi
	addl  %esi,%edx
	pop   %esi
	imull %esi,%ecx
	addl  %ecx,%edx
#endif
	pop   %esi
	ret
	.size __muldi3,.-__muldi3