diff options
author | tegge <tegge@FreeBSD.org> | 1997-12-15 02:18:35 +0000 |
---|---|---|
committer | tegge <tegge@FreeBSD.org> | 1997-12-15 02:18:35 +0000 |
commit | ba494eff3a511b2f5c5d9bbc02686772b9ed4de7 (patch) | |
tree | 6d2e4d72fd7140f16dc511d497a2d2acfcae6f26 /sys/kern | |
parent | da6ab2349a36aff5f17c3d322976dace8fa64ac7 (diff) | |
download | FreeBSD-src-ba494eff3a511b2f5c5d9bbc02686772b9ed4de7.zip FreeBSD-src-ba494eff3a511b2f5c5d9bbc02686772b9ed4de7.tar.gz |
Add support for low resolution SMP kernel profiling.
- A nonprofiling version of s_lock (called s_lock_np) is used
by mcount.
- When profiling is active, more registers are clobbered in
seemingly simple assembly routines. This means that some
callers needed to save/restore extra registers.
- The stack pointer must have space for a 'fake' return address
in idle, to avoid stack underflow.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/subr_smp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index 4d1af37..7397775 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.62 1997/12/12 21:45:23 tegge Exp $ + * $Id: mp_machdep.c,v 1.63 1997/12/15 01:14:10 tegge Exp $ */ #include "opt_smp.h" @@ -1512,6 +1512,9 @@ struct simplelock intr_lock; /* lock regions protected in UP kernel via cli/sti */ struct simplelock mpintr_lock; +/* lock region used by kernel profiling */ +struct simplelock mcount_lock; + #ifdef USE_COMLOCK /* locks com (tty) data/hardware accesses: a FASTINTR() */ struct simplelock com_lock; @@ -1536,6 +1539,8 @@ init_locks(void) s_lock_init((struct simplelock*)&mpintr_lock); + s_lock_init((struct simplelock*)&mcount_lock); + s_lock_init((struct simplelock*)&fast_intr_lock); s_lock_init((struct simplelock*)&intr_lock); s_lock_init((struct simplelock*)&imen_lock); |