1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
/* Copyright (C) 1993 Hongjiu Lu
This file is part of the Linux C Library.
The Linux C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The Linux C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. */
.file "fmod.S"
.text
#ifdef __ELF__
#define _fmod fmod
#endif
.globl _fmod
#ifdef __i486__
.align 4,0x90
#else
.align 2,0x90
#endif
_fmod:
fldl 4(%esp)
ftst
fnstsw %ax
sahf
jz zero1
fldl 12(%esp)
ftst
fnstsw %ax
sahf
jz zero2
fxch %st(1)
loop:
fprem
fnstsw %ax
sahf
jpe loop
fstp %st(1)
ret
#ifdef __i486__
.align 4,0x90
#else
.align 2,0x90
#endif
zero2:
fstp %st(0)
zero1:
ret
#ifdef __ELF__
.type fmod,@function
#endif
|