From 082a6afc1c1ebffc8a26b7cf47fadb44e7ef5b0c Mon Sep 17 00:00:00 2001 From: jake Date: Mon, 29 Jul 2002 00:45:13 +0000 Subject: Add routines needed for high resolution profiling. --- sys/conf/files.sparc64 | 1 + sys/sparc64/sparc64/prof_machdep.c | 83 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 sys/sparc64/sparc64/prof_machdep.c diff --git a/sys/conf/files.sparc64 b/sys/conf/files.sparc64 index 346aff3..a0758a5 100644 --- a/sys/conf/files.sparc64 +++ b/sys/conf/files.sparc64 @@ -56,6 +56,7 @@ sparc64/sparc64/nexus.c standard sparc64/sparc64/ofw_bus.c standard sparc64/sparc64/ofw_machdep.c standard sparc64/sparc64/pmap.c standard +sparc64/sparc64/prof_machdep.c optional profiling-routine sparc64/sparc64/rwindow.c standard sparc64/sparc64/sparcbus_if.m standard sparc64/sparc64/support.s standard diff --git a/sys/sparc64/sparc64/prof_machdep.c b/sys/sparc64/sparc64/prof_machdep.c new file mode 100644 index 0000000..065a1da --- /dev/null +++ b/sys/sparc64/sparc64/prof_machdep.c @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 1996 Bruce D. Evans. + * Copyright (c) 2002 by Thomas Moestl . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * from: src/sys/i386/isa/prof_machdep.c,v 1.16 2000/07/04 11:25:19 + * + * $FreeBSD$ + */ + +#ifdef GUPROF + +#include +#include +#include +#include +#include + +#include +#include + +int cputime_bias; + +/* + * Return the time elapsed since the last call. The units are machine- + * dependent. + * XXX: this is not SMP-safe. It should use per-CPU variables; %tick can be + * used though. + */ +int +cputime(void) +{ + u_long count; + int delta; + static u_long prev_count; + + count = rd(tick); + delta = (int)(count - prev_count); + prev_count = count; + return (delta); +} + +/* + * The start and stop routines need not be here since we turn off profiling + * before calling them. They are here for convenience. + */ +void +startguprof(struct gmonparam *gp) +{ + + gp->profrate = tick_freq; + cputime_bias = 0; + cputime(); +} + +void +stopguprof(struct gmonparam *gp) +{ + /* Nothing to do. */ +} + +#endif /* GUPROF */ -- cgit v1.1