summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/i386/sin.S
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/i386/sin.S')
-rw-r--r--mdk-stage1/dietlibc/i386/sin.S20
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