1 	.file	"div_small.S"
2 /*---------------------------------------------------------------------------+
3  |  div_small.S                                                              |
4  |                                                                           |
5  | Divide a 64 bit integer by a 32 bit integer & return remainder.           |
6  |                                                                           |
7  | Copyright (C) 1992,1995                                                   |
8  |                       W. Metzenthen, 22 Parker St, Ormond, Vic 3163,      |
9  |                       Australia.  E-mail billm@jacobi.maths.monash.edu.au |
10  |                                                                           |
11  |                                                                           |
12  +---------------------------------------------------------------------------*/
13 
14 /*---------------------------------------------------------------------------+
15  |    unsigned long FPU_div_small(unsigned long long *x, unsigned long y)    |
16  +---------------------------------------------------------------------------*/
17 
18 #include "fpu_emu.h"
19 
20 .text
21 ENTRY(FPU_div_small)
22 	pushl	%ebp
23 	movl	%esp,%ebp
24 
25 	pushl	%esi
26 
27 	movl	PARAM1,%esi	/* pointer to num */
28 	movl	PARAM2,%ecx	/* The denominator */
29 
30 	movl	4(%esi),%eax	/* Get the current num msw */
31 	xorl	%edx,%edx
32 	divl	%ecx
33 
34 	movl	%eax,4(%esi)
35 
36 	movl	(%esi),%eax	/* Get the num lsw */
37 	divl	%ecx
38 
39 	movl	%eax,(%esi)
40 
41 	movl	%edx,%eax	/* Return the remainder in eax */
42 
43 	popl	%esi
44 
45 	leave
46 	ret
47 
48