Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 |