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 ENTRY(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 ENDPROC(FPU_div_small)