summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authortegge <tegge@FreeBSD.org>1997-12-15 02:18:35 +0000
committertegge <tegge@FreeBSD.org>1997-12-15 02:18:35 +0000
commitba494eff3a511b2f5c5d9bbc02686772b9ed4de7 (patch)
tree6d2e4d72fd7140f16dc511d497a2d2acfcae6f26 /sys/kern
parentda6ab2349a36aff5f17c3d322976dace8fa64ac7 (diff)
downloadFreeBSD-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.c7
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);
OpenPOWER on IntegriCloud