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