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 | |