Updated to fedora-glibc-20090427T1419
[glibc/history.git] / sysdeps / i386 / fpu / s_tanl.S
blob151b77113f521e48897f675cc198f228e69d0818
1 /*
2  * Written by J.T. Conklin <jtc@netbsd.org>.
3  * Public domain.
4  *
5  * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
6  * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
7  */
9 #define __need_Emath
10 #include <bits/errno.h>
11 #include <machine/asm.h>
13 ENTRY(__tanl)
14         fldt    4(%esp)
15         fxam
16         fstsw   %ax
17         movb    $0x45, %dh
18         andb    %ah, %dh
19         cmpb    $0x05, %dh
20         je      3f
21 4:      fptan
22         fnstsw  %ax
23         testl   $0x400,%eax
24         jnz     1f
25         fstp    %st(0)
26         ret
27 1:      fldpi
28         fadd    %st(0)
29         fxch    %st(1)
30 2:      fprem1
31         fstsw   %ax
32         testl   $0x400,%eax
33         jnz     2b
34         fstp    %st(1)
35         fptan
36         fstp    %st(0)
37         ret
39 #ifdef PIC
40         pushl   %ebx
41         cfi_adjust_cfa_offset (4)
42         cfi_rel_offset (ebx, 0)
43         LOAD_PIC_REG (bx)
44         call    __errno_location@PLT
45         movl    $EDOM, (%eax)
46         popl    %ebx
47         cfi_adjust_cfa_offset (-4)
48         cfi_restore (ebx)
49 #else
50         call    __errno_location@PLT
51         movl    $EDOM, (%eax)
52 #endif
53         jmp     4b
54 END (__tanl)
55 weak_alias (__tanl, tanl)