glibc/sysdeps/s390/fpu
Stefan Liebler 5d96fe8c0d S390: Fix handling of DXC-byte in FPC-register.
On s390, the DXC(data-exception-code)-byte in FPC(floating-point-control)-
register contains a code of the last occured exception.
If bits 6 and 7 of DXC-byte are zero, the bits 0-5 correspond to the
ieee-exception flag bits.
The current implementation always uses these bits as ieee-exception flag bits.
fetestexcept() reports any exception after the first usage of a
vector-instruction in a process, because it raises an "vector instruction
exception" with DXC-code 0xFE.
This patch fixes the handling of the DXC-byte. The DXC-Byte is only handled
if bits 6 and 7 are zero.

The #define _FPU_RESERVED is extended by the DXC-Byte.
Otherwise the tests math/test-fpucw-static and math/test-fpucw-ieee-static
fails, because DXC-Byte contains the vector instruction exception when reaching
main(). This exception was triggered by strrchr() call in __init_misc().
__init_misc() is called after __setfpucw () in __libc_init_first().

The field __ieee_instruction_pointer in struct fenv_t is renamed to __unused
because it is a relict from commit "Remove PTRACE_PEEKUSER"
(87b9b50f0d) and isn´t used anymore.

ChangeLog:

	[BZ #18610]
	* sysdeps/s390/fpu/bits/fenv.h (fenv_t): Rename
	__ieee_instruction_pointer to __unused.
	* sysdeps/s390/fpu/fesetenv.c (__fesetenv): Remove usage of
	__ieee_instruction_pointer.
	* sysdeps/s390/fpu/fclrexcpt.c (feclearexcept): Fix dxc-field handling.
	* sysdeps/s390/fpu/fgetexcptflg.c (fegetexceptflag): Likewise.
	* sysdeps/s390/fpu/fsetexcptflg.c (fesetexceptflag): Likewise.
	* sysdeps/s390/fpu/ftestexcept.c (fetestexcept): Likewise.
	* sysdeps/s390/fpu/fpu_control.h (_FPU_RESERVED):
	Mark dxc-field as reserved.
2015-08-26 10:26:18 +02:00
..
bits S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
e_sqrt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_sqrtf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_sqrtl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fclrexcpt.c S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
fedisblxcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
feenablxcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fegetenv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fegetexcept.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fegetround.c Fix libm fegetround namespace (bug 17748). 2015-01-02 20:44:42 +00:00
feholdexcpt.c Fix libm feholdexcept namespace (bug 17748). 2015-01-05 23:06:14 +00:00
fenv_libc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fesetenv.c S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
fesetround.c Fix libm fesetround namespace (bug 17748). 2015-01-07 00:41:23 +00:00
feupdateenv.c Fix libm feupdateenv namespace (bug 17748). 2015-01-07 19:01:20 +00:00
fgetexcptflg.c S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
fpu_control.h S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
fraiseexcpt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fsetexcptflg.c S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
ftestexcept.c S390: Fix handling of DXC-byte in FPC-register. 2015-08-26 10:26:18 +02:00
get-rounding-mode.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
libm-test-ulps S390: Regenerate ULPs 2015-07-15 09:33:14 +02:00
s_fma.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fmaf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00