summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2006-02-03 22:28:47 +0000
committerRoland McGrath <roland@gnu.org>2006-02-03 22:28:47 +0000
commitf2a2deef4de6c97f557b925e6701135dddce2eac (patch)
tree636a6270bfe54fffad416a4a140ef2f0b3069d3c
parentee926fc8f961697ee4c5d55da6c78716f12853c1 (diff)
downloadglibc-f2a2deef4de6c97f557b925e6701135dddce2eac.tar.gz
[BZ #2268]
2006-02-03 Roland McGrath <roland@redhat.com> [BZ #2268] * sysdeps/posix/profil.c (__profil): Use __profile_frequency to choose timer interval, don't assume smallest possible interval is it. * sysdeps/powerpc/fpu/bits/fenvinline.h (fegetround): Make asm volatile.
-rw-r--r--ChangeLog9
-rw-r--r--sysdeps/posix/profil.c6
-rw-r--r--sysdeps/powerpc/fpu/bits/fenvinline.h8
3 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 3f5c3aafd3..ecbf595f2f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
+2006-02-03 Roland McGrath <roland@redhat.com>
+
+ [BZ #2268]
+ * sysdeps/posix/profil.c (__profil): Use __profile_frequency to choose
+ timer interval, don't assume smallest possible interval is it.
+
2006-02-03 Jakub Jelinek <jakub@redhat.com>
+ * sysdeps/powerpc/fpu/bits/fenvinline.h (fegetround): Make asm
+ volatile.
+
* stdlib/bits/stdlib-ldbl.h (qecvt, qfcvt, qgcvt, qecvt_r, qfcvt_r):
Guard with [__USE_SVID || __USE_XOPEN_EXTENDED].
diff --git a/sysdeps/posix/profil.c b/sysdeps/posix/profil.c
index f40faee33d..281b53bf6a 100644
--- a/sysdeps/posix/profil.c
+++ b/sysdeps/posix/profil.c
@@ -1,5 +1,6 @@
/* Low-level statistical profiling support function. Mostly POSIX.1 version.
- Copyright (C) 1996,97,98,2002, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,1998,2002,2004,2005,2006
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -22,6 +23,7 @@
#include <errno.h>
#include <signal.h>
#include <sys/time.h>
+#include <libc-internal.h>
#ifndef SIGPROF
@@ -110,7 +112,7 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
return -1;
timer.it_value.tv_sec = 0;
- timer.it_value.tv_usec = 1;
+ timer.it_value.tv_usec = 1000000 / __profile_frequency ();
timer.it_interval = timer.it_value;
return __setitimer (ITIMER_PROF, &timer, otimer_ptr);
}
diff --git a/sysdeps/powerpc/fpu/bits/fenvinline.h b/sysdeps/powerpc/fpu/bits/fenvinline.h
index 552c8c9db7..f7700a49e7 100644
--- a/sysdeps/powerpc/fpu/bits/fenvinline.h
+++ b/sysdeps/powerpc/fpu/bits/fenvinline.h
@@ -1,5 +1,6 @@
/* Inline floating-point environment handling functions for powerpc.
- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2006
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -22,8 +23,9 @@
/* Inline definition for fegetround. */
# define fegetround() \
(__extension__ ({ int __fegetround_result; \
- __asm__ ("mcrfs 7,7 ; mfcr %0" \
- : "=r"(__fegetround_result) : : "cr7"); \
+ __asm__ __volatile__ \
+ ("mcrfs 7,7 ; mfcr %0" \
+ : "=r"(__fegetround_result) : : "cr7"); \
__fegetround_result & 3; }))
/* The weird 'i#*X' constraints on the following suppress a gcc