]>
Commit | Line | Data |
---|---|---|
62f29da7 | 1 | /* Procedure definition for FE_NOMASK_ENV for Linux/ppc64. |
6ddd37a4 | 2 | Copyright (C) 2003, 2006 Free Software Foundation, Inc. |
c8f3e6bc RM |
3 | This file is part of the GNU C Library. |
4 | ||
5 | The GNU C Library is free software; you can redistribute it and/or | |
6 | modify it under the terms of the GNU Lesser General Public | |
7 | License as published by the Free Software Foundation; either | |
8 | version 2.1 of the License, or (at your option) any later version. | |
9 | ||
10 | The GNU C Library is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | Lesser General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU Lesser General Public | |
16 | License along with the GNU C Library; if not, write to the Free | |
17 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | |
18 | 02111-1307 USA. */ | |
19 | ||
62f29da7 UD |
20 | #include <fenv.h> |
21 | #include <errno.h> | |
1e49399d UD |
22 | #include <sysdep.h> |
23 | #include <sys/syscall.h> | |
62f29da7 | 24 | #include <sys/prctl.h> |
6ddd37a4 | 25 | #include <kernel-features.h> |
c8f3e6bc | 26 | |
62f29da7 UD |
27 | const fenv_t * |
28 | __fe_nomask_env (void) | |
29 | { | |
b35fce97 RM |
30 | #if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE |
31 | int result; | |
1e2f8718 | 32 | INTERNAL_SYSCALL_DECL (err); |
b35fce97 RM |
33 | result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); |
34 | # ifndef __ASSUME_NEW_PRCTL_SYSCALL | |
35 | if (INTERNAL_SYSCALL_ERROR_P (result, err) | |
36 | && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) | |
37 | __set_errno (ENOSYS); | |
38 | # endif | |
6ddd37a4 | 39 | #else |
38e68573 UD |
40 | __set_errno (ENOSYS); |
41 | #endif | |
62f29da7 UD |
42 | return FE_ENABLED_ENV; |
43 | } |