about summary refs log tree commit diff
path: root/sysdeps/i386/i686/hp-timing.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-02-01 07:49:47 +0000
committerUlrich Drepper <drepper@redhat.com>2002-02-01 07:49:47 +0000
commitccdf0cab1d670a05afff42b02c7583ccd23abde9 (patch)
tree728f8fc2797a2de2b94a0481b3af4c462e65fc7a /sysdeps/i386/i686/hp-timing.h
parent5688da55372193e5941f0240e6ea759d28483970 (diff)
downloadglibc-ccdf0cab1d670a05afff42b02c7583ccd23abde9.tar.gz
glibc-ccdf0cab1d670a05afff42b02c7583ccd23abde9.tar.xz
glibc-ccdf0cab1d670a05afff42b02c7583ccd23abde9.zip
Update.
	* elf/dl-minimal.c: Define _itoa for 32-bit machines with HP timing.
	* elf/dl-reloc.c: Pretty printing.
	* sysdeps/generic/ldsodefs.h: Move _dl_hp_timing_overhead and
	procinfo-related variables in rtld_global struct.
	* elf/dl-support.c: Likewise.
	* elf/rtld.c: Likewise.
	* sysdeps/i386/i686/Makefile: Likewise.
	* sysdeps/i386/i686/hp-timing.c: Likewise.
	* sysdeps/i386/i686/hp-timing.h: Likewise.
	* sysdeps/ia64/Makefile: Likewise.
	* sysdeps/ia64/hp-timing.c: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/Makefile: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/dl-procinfo.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Likewise.
	* sysdeps/x86_64/Makefile: Likewise.
Diffstat (limited to 'sysdeps/i386/i686/hp-timing.h')
-rw-r--r--sysdeps/i386/i686/hp-timing.h29
1 files changed, 14 insertions, 15 deletions
diff --git a/sysdeps/i386/i686/hp-timing.h b/sysdeps/i386/i686/hp-timing.h
index f2f24d3202..afb5c7123b 100644
--- a/sysdeps/i386/i686/hp-timing.h
+++ b/sysdeps/i386/i686/hp-timing.h
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  i686 version.
-   Copyright (C) 1998 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -84,10 +84,6 @@
 /* We use 64bit values for the times.  */
 typedef unsigned long long int hp_timing_t;
 
-/* Internal variable used to store the overhead of the measurement
-   opcodes.  */
-extern hp_timing_t __libc_hp_timing_overhead;
-
 /* Set timestamp value to zero.  */
 #define HP_TIMING_ZERO(Var)	(Var) = (0)
 
@@ -101,17 +97,20 @@ extern hp_timing_t __libc_hp_timing_overhead;
 /* Use two 'rdtsc' instructions in a row to find out how long it takes.  */
 #define HP_TIMING_DIFF_INIT() \
   do {									      \
-    int __cnt = 5;							      \
-    __libc_hp_timing_overhead = ~0ull;					      \
-    do									      \
+    if (GL(dl_hp_timing_overhead) == 0)					      \
       {									      \
-	hp_timing_t __t1, __t2;						      \
-	HP_TIMING_NOW (__t1);						      \
-	HP_TIMING_NOW (__t2);						      \
-	if (__t2 - __t1 < __libc_hp_timing_overhead)			      \
-	  __libc_hp_timing_overhead = __t2 - __t1;			      \
+	int __cnt = 5;							      \
+	GL(dl_hp_timing_overhead) = ~0ull;				      \
+	do								      \
+	  {								      \
+	    hp_timing_t __t1, __t2;					      \
+	    HP_TIMING_NOW (__t1);					      \
+	    HP_TIMING_NOW (__t2);					      \
+	    if (__t2 - __t1 < GL(dl_hp_timing_overhead))		      \
+	      GL(dl_hp_timing_overhead) = __t2 - __t1;			      \
+	  }								      \
+	while (--__cnt > 0);						      \
       }									      \
-    while (--__cnt > 0);						      \
   } while (0)
 
 /* It's simple arithmetic for us.  */
@@ -122,7 +121,7 @@ extern hp_timing_t __libc_hp_timing_overhead;
   do {									      \
     char __not_done;							      \
     hp_timing_t __oldval = (Sum);					      \
-    hp_timing_t __diff = (Diff) - __libc_hp_timing_overhead;		      \
+    hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead);		      \
     do									      \
       {									      \
 	hp_timing_t __newval = __oldval + __diff;			      \