diff options
Diffstat (limited to 'mdk-stage1/dietlibc/i386/sin.S')
-rw-r--r-- | mdk-stage1/dietlibc/i386/sin.S | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/mdk-stage1/dietlibc/i386/sin.S b/mdk-stage1/dietlibc/i386/sin.S index 1c99b2d12..404bf5eed 100644 --- a/mdk-stage1/dietlibc/i386/sin.S +++ b/mdk-stage1/dietlibc/i386/sin.S @@ -7,16 +7,26 @@ .type sinl,@function sinf: flds 4(%esp) - jmp __sin + jmp 1f sin: fldl 4(%esp) -__sin: - call __fmod2pi +1: fsin + fnstsw %ax + testb $0x04, %ah + je 3f + fldpi + fadd %st + fxch %st(1) +2: fprem1 + fnstsw %ax + testb $0x04, %ah + jne 2b + fstp %st(1) fsin - ret +3: ret sinl: fldt 4(%esp) - jmp __sin + jmp 1b .ende: .size sin,.ende-sin |