about summary refs log tree commit diff
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
glibc-f2a2deef4de6c97f557b925e6701135dddce2eac.tar.xz
glibc-f2a2deef4de6c97f557b925e6701135dddce2eac.zip
[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