18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci .file "div_small.S" 38c2ecf20Sopenharmony_ci/*---------------------------------------------------------------------------+ 48c2ecf20Sopenharmony_ci | div_small.S | 58c2ecf20Sopenharmony_ci | | 68c2ecf20Sopenharmony_ci | Divide a 64 bit integer by a 32 bit integer & return remainder. | 78c2ecf20Sopenharmony_ci | | 88c2ecf20Sopenharmony_ci | Copyright (C) 1992,1995 | 98c2ecf20Sopenharmony_ci | W. Metzenthen, 22 Parker St, Ormond, Vic 3163, | 108c2ecf20Sopenharmony_ci | Australia. E-mail billm@jacobi.maths.monash.edu.au | 118c2ecf20Sopenharmony_ci | | 128c2ecf20Sopenharmony_ci | | 138c2ecf20Sopenharmony_ci +---------------------------------------------------------------------------*/ 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci/*---------------------------------------------------------------------------+ 168c2ecf20Sopenharmony_ci | unsigned long FPU_div_small(unsigned long long *x, unsigned long y) | 178c2ecf20Sopenharmony_ci +---------------------------------------------------------------------------*/ 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#include "fpu_emu.h" 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci.text 228c2ecf20Sopenharmony_ciSYM_FUNC_START(FPU_div_small) 238c2ecf20Sopenharmony_ci pushl %ebp 248c2ecf20Sopenharmony_ci movl %esp,%ebp 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci pushl %esi 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci movl PARAM1,%esi /* pointer to num */ 298c2ecf20Sopenharmony_ci movl PARAM2,%ecx /* The denominator */ 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci movl 4(%esi),%eax /* Get the current num msw */ 328c2ecf20Sopenharmony_ci xorl %edx,%edx 338c2ecf20Sopenharmony_ci divl %ecx 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci movl %eax,4(%esi) 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci movl (%esi),%eax /* Get the num lsw */ 388c2ecf20Sopenharmony_ci divl %ecx 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci movl %eax,(%esi) 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci movl %edx,%eax /* Return the remainder in eax */ 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci popl %esi 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci leave 478c2ecf20Sopenharmony_ci RET 488c2ecf20Sopenharmony_ciSYM_FUNC_END(FPU_div_small) 49