diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-04-26 01:04:54 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-04-26 01:04:54 +0000 |
commit | 0c59a1963e948c546e0d3e34de974c7e71de1134 (patch) | |
tree | d2d20501ed445fc7e36e3cb4b0491a744c982976 /sysdeps/x86_64/fpu | |
parent | 4bbf8999f4d93c5da77737ccf06a1aa67225d3f4 (diff) | |
download | glibc-0c59a1963e948c546e0d3e34de974c7e71de1134.tar.gz glibc-0c59a1963e948c546e0d3e34de974c7e71de1134.tar.xz glibc-0c59a1963e948c546e0d3e34de974c7e71de1134.zip |
* sysdeps/i386/fpu/s_cos.S: Set errno for ±Inf.
* sysdeps/i386/fpu/s_cosf.S: Likewise. * sysdeps/i386/fpu/s_cosl.S: Likewise. * sysdeps/i386/fpu/s_sin.S: Likewise. * sysdeps/i386/fpu/s_sinf.S: Likewise. * sysdeps/i386/fpu/s_sinl.S: Likewise. * sysdeps/ieee754/dbl-64/s_sin.c: Likewise. * sysdeps/ieee754/flt-32/s_cosf.c: Likewise. * sysdeps/ieee754/flt-32/s_sinf.c: Likewise. * sysdeps/ieee754/ldbl-96/s_cosl.c: Likewise. * sysdeps/ieee754/ldbl-96/s_sinl.c: Likewise. * sysdeps/x86_64/fpu/s_cosl.S: Likewise. * sysdeps/x86_64/fpu/s_sinl.S: Likewise. * math/libm-test.inc: Add tests for errno after sin/cos calls with ±Inf.
Diffstat (limited to 'sysdeps/x86_64/fpu')
-rw-r--r-- | sysdeps/x86_64/fpu/s_cosl.S | 16 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/s_sinl.S | 14 |
2 files changed, 26 insertions, 4 deletions
diff --git a/sysdeps/x86_64/fpu/s_cosl.S b/sysdeps/x86_64/fpu/s_cosl.S index 6636fb5ec6..6921cda567 100644 --- a/sysdeps/x86_64/fpu/s_cosl.S +++ b/sysdeps/x86_64/fpu/s_cosl.S @@ -4,15 +4,22 @@ * * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. + * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>. */ +#define __need_Emath +#include <bits/errno.h> #include <machine/asm.h> -RCSID("$NetBSD: $") - ENTRY(__cosl) fldt 8(%rsp) - fcos + fxam + fstsw %ax + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 3f +4: fcos fnstsw %ax testl $0x400,%eax jnz 1f @@ -28,5 +35,8 @@ ENTRY(__cosl) fstp %st(1) fcos ret +3: call __errno_location@PLT + movl $EDOM, (%rax) + jmp 4b END (__cosl) weak_alias (__cosl, cosl) diff --git a/sysdeps/x86_64/fpu/s_sinl.S b/sysdeps/x86_64/fpu/s_sinl.S index 181f112f4f..79fc4af95b 100644 --- a/sysdeps/x86_64/fpu/s_sinl.S +++ b/sysdeps/x86_64/fpu/s_sinl.S @@ -4,13 +4,22 @@ * * Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>. * Adapted for x86-64 by Andreas Jaeger <aj@suse.de>. + * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>. */ +#define __need_Emath +#include <bits/errno.h> #include <machine/asm.h> ENTRY(__sinl) fldt 8(%rsp) - fsin + fxam + fstsw %ax + movb $0x45, %dh + andb %ah, %dh + cmpb $0x05, %dh + je 3f +4: fsin fnstsw %ax testl $0x400,%eax jnz 1f @@ -26,5 +35,8 @@ ENTRY(__sinl) fstp %st(1) fsin ret +3: call __errno_location@PLT + movl $EDOM, (%rax) + jmp 4b END (__sinl) weak_alias (__sinl, sinl) |