summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/dl-sysdep.c10
-rw-r--r--sysdeps/unix/sysv/linux/init-first.c6
2 files changed, 14 insertions, 2 deletions
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 15f85550fe..120f362e75 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -28,6 +28,7 @@
#include <sys/mman.h>
#include <elf/ldsodefs.h>
#include <stdio-common/_itoa.h>
+#include <fpu_control.h>
#include <entry.h>
#include <dl-machine.h>
@@ -126,6 +127,9 @@ _dl_sysdep_start (void **start_argptr,
case AT_HWCAP:
_dl_hwcap = av->a_un.a_val;
break;
+ case AT_FPUCW:
+ __fpu_control = av->a_un.a_val;
+ break;
}
/* Linux doesn't provide us with any of these values on the stack
@@ -249,6 +253,12 @@ _dl_show_auxv (void)
16, 0),
"\n", NULL);
break;
+ case AT_FPUCW:
+ _dl_sysdep_message ("AT_FPUCW: ",
+ _itoa_word (av->a_un.a_val, buf + sizeof buf - 1,
+ 10, 0),
+ "\n", NULL);
+ break;
}
}
diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c
index 0931e99113..4b7af46d78 100644
--- a/sysdeps/unix/sysv/linux/init-first.c
+++ b/sysdeps/unix/sysv/linux/init-first.c
@@ -60,8 +60,10 @@ init (int argc, char **argv, char **envp)
the executable format. */
__personality (PER_LINUX);
- /* Set the FPU control word to the proper default value. */
- __setfpucw (__fpu_control);
+ /* Set the FPU control word to the proper default value if the
+ kernel would use a different value. */
+ if (__fpu_control != _FPU_DEFAULT)
+ __setfpucw (__fpu_control);
}
/* Save the command-line arguments. */