1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- .file "div_small.S"
- /*---------------------------------------------------------------------------+
- | div_small.S |
- | |
- | Divide a 64 bit integer by a 32 bit integer & return remainder. |
- | |
- | Copyright (C) 1992,1995 |
- | W. Metzenthen, 22 Parker St, Ormond, Vic 3163, |
- | Australia. E-mail billm@jacobi.maths.monash.edu.au |
- | |
- | |
- +---------------------------------------------------------------------------*/
- /*---------------------------------------------------------------------------+
- | unsigned long FPU_div_small(unsigned long long *x, unsigned long y) |
- +---------------------------------------------------------------------------*/
- #include "fpu_emu.h"
- .text
- ENTRY(FPU_div_small)
- pushl %ebp
- movl %esp,%ebp
- pushl %esi
- movl PARAM1,%esi /* pointer to num */
- movl PARAM2,%ecx /* The denominator */
- movl 4(%esi),%eax /* Get the current num msw */
- xorl %edx,%edx
- divl %ecx
- movl %eax,4(%esi)
- movl (%esi),%eax /* Get the num lsw */
- divl %ecx
- movl %eax,(%esi)
- movl %edx,%eax /* Return the remainder in eax */
- popl %esi
- leave
- ret
|