summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_prof.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1999-05-06 09:44:57 +0000
committerbde <bde@FreeBSD.org>1999-05-06 09:44:57 +0000
commit5b08c51b31821f3ee69a4da34d5618c450494568 (patch)
tree519c2330fe4c5a08795caf7b4c055e6ca5fefe77 /sys/kern/subr_prof.c
parent897b3119d8cdee2c1e43b35e5c16706c95f19ef1 (diff)
downloadFreeBSD-src-5b08c51b31821f3ee69a4da34d5618c450494568.zip
FreeBSD-src-5b08c51b31821f3ee69a4da34d5618c450494568.tar.gz
Fixed profiling of elf kernels. Made high resolution profiling compile
for elf kernels (it is broken for all kernels due to lack of egcs support). Renaming of many assembler labels is avoided by declaring by declaring the labels that need to be visible to gprof as having type "function" and depending on the elf version of gprof being zealous about discarding the others. A few type declarations are still missing, mainly for SMP. PR: 9413 Submitted by: Assar Westerlund <assar@sics.se> (initial parts)
Diffstat (limited to 'sys/kern/subr_prof.c')
-rw-r--r--sys/kern/subr_prof.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/subr_prof.c b/sys/kern/subr_prof.c
index d0ecad7..bed6aa0 100644
--- a/sys/kern/subr_prof.c
+++ b/sys/kern/subr_prof.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)subr_prof.c 8.3 (Berkeley) 9/23/93
- * $Id: subr_prof.c,v 1.27 1998/07/14 05:09:46 bde Exp $
+ * $Id: subr_prof.c,v 1.28 1998/09/05 14:30:11 bde Exp $
*/
#include <sys/param.h>
@@ -47,6 +47,7 @@
#ifdef GPROF
#include <sys/malloc.h>
#include <sys/gmon.h>
+#undef MCOUNT
static MALLOC_DEFINE(M_GPROF, "gprof", "kernel profiling buffer");
@@ -56,6 +57,8 @@ SYSINIT(kmem, SI_SUB_KPROF, SI_ORDER_FIRST, kmstartup, NULL)
struct gmonparam _gmonparam = { GMON_PROF_OFF };
#ifdef GUPROF
+#include <machine/asmacros.h>
+
void
nullfunc_loop_profiled()
{
@@ -174,7 +177,7 @@ kmstartup(dummy)
startguprof(p);
for (i = 0; i < CALIB_SCALE; i++)
#if defined(__i386__) && __GNUC__ >= 2
- __asm("call mexitcount; 1:"
+ __asm("call " __XSTRING(HIDENAME(mexitcount)) "; 1:"
: : : "ax", "bx", "cx", "dx", "memory");
__asm("movl $1b,%0" : "=rm" (tmp_addr));
#else
OpenPOWER on IntegriCloud