From f2a2deef4de6c97f557b925e6701135dddce2eac Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 3 Feb 2006 22:28:47 +0000 Subject: [BZ #2268] 2006-02-03 Roland McGrath [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. --- sysdeps/posix/profil.c | 6 ++++-- sysdeps/powerpc/fpu/bits/fenvinline.h | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'sysdeps') 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 #include #include +#include #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 -- cgit 1.4.1