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