From ccdf0cab1d670a05afff42b02c7583ccd23abde9 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 1 Feb 2002 07:49:47 +0000 Subject: 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. --- sysdeps/i386/i686/Makefile | 1 + sysdeps/i386/i686/hp-timing.c | 4 ++-- sysdeps/i386/i686/hp-timing.h | 29 ++++++++++++++--------------- 3 files changed, 17 insertions(+), 17 deletions(-) (limited to 'sysdeps/i386') diff --git a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile index b4b60d0814..b85167fe4d 100644 --- a/sysdeps/i386/i686/Makefile +++ b/sysdeps/i386/i686/Makefile @@ -1,3 +1,4 @@ ifeq ($(subdir),csu) sysdep_routines += hp-timing +static-only-routines += hp-timing endif diff --git a/sysdeps/i386/i686/hp-timing.c b/sysdeps/i386/i686/hp-timing.c index c52099c73d..c8c88650cb 100644 --- a/sysdeps/i386/i686/hp-timing.c +++ b/sysdeps/i386/i686/hp-timing.c @@ -1,5 +1,5 @@ /* Support for 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 , 1998. @@ -21,4 +21,4 @@ #include /* We have to define the variable for the overhead. */ -hp_timing_t __libc_hp_timing_overhead; +hp_timing_t _dl_hp_timing_overhead; 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 , 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; \ -- cgit v1.2.3