Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 25 Oct 2000 20:29:30 +0000 (20:29 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 25 Oct 2000 20:29:30 +0000 (20:29 +0000)
2000-10-25  David Mosberger  <davidm@hpl.hp.com>

* sysdeps/unix/sysv/linux/ia64/profil-counter.h: Multiply slot
number by four to use bins of width 4 to get accurate
instruction-level profiling.

ChangeLog
sysdeps/unix/sysv/linux/ia64/profil-counter.h

index 1163fba..3ec6463 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-10-25  David Mosberger  <davidm@hpl.hp.com>
+
+       * sysdeps/unix/sysv/linux/ia64/profil-counter.h: Multiply slot
+       number by four to use bins of width 4 to get accurate
+       instruction-level profiling.
+
 2000-10-25  Andreas Jaeger  <aj@suse.de>
 
        * sysdeps/generic/dl-cache.h (CACHEMAGIC_VERSION_NEW): Correct string.
index 1cc0390..a3e501d 100644 (file)
 static void
 profil_counter (int signr, int code, struct sigcontext *scp)
 {
-  profil_count ((void *) scp->sc_ip);
+  unsigned long ip = scp->sc_ip & ~0X3ULL, slot = scp->sc_ip & 0x3ull;
+
+  /* Note: Linux/ia64 encodes the slot number in bits 0 and 1.  We
+     want to multiply the slot number by four so we can use bins of
+     width 4 to get accurate instruction-level profiling.  */
+  profil_count ((void *) (ip + 4*slot));
 }