aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/subr_mcount.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/subr_mcount.c')
-rw-r--r--sys/kern/subr_mcount.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/sys/kern/subr_mcount.c b/sys/kern/subr_mcount.c
index 7d57dc190c21..e36d21815333 100644
--- a/sys/kern/subr_mcount.c
+++ b/sys/kern/subr_mcount.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)subr_mcount.c 7.10 (Berkeley) 5/7/91
- * $Id: subr_mcount.c,v 1.3 1993/10/16 15:24:41 rgrimes Exp $
+ * $Id: subr_mcount.c,v 1.6 1993/12/20 16:41:12 davidg Exp $
*/
#ifdef GPROF
@@ -47,14 +47,16 @@ int profiling = 3;
u_short *froms;
struct tostruct *tos = 0;
long tolimit = 0;
-char *s_lowpc = (char *)KERNBASE;
-extern char etext;
-char *s_highpc = &etext;
+extern char btext[];
+char *s_lowpc = btext;
+extern char etext[];
+char *s_highpc = etext;
u_long s_textsize = 0;
int ssiz;
u_short *sbuf;
u_short *kcount;
+void
kmstartup()
{
u_long fromssize, tossize;
@@ -107,6 +109,7 @@ kmstartup()
kcount = (u_short *)(((int)sbuf) + sizeof (struct phdr));
}
+void
mcount()
{
register char *selfpc; /* r11 => r5 */
@@ -167,9 +170,6 @@ mcount()
asm(" movl (sp), r11"); /* selfpc = ... (jsb frame) */
asm(" movl 16(fp), r10"); /* frompcindex = (calls frame) */
#endif
-#if defined(i386)
- Fix Me!!
-#endif /* i386 */
#if defined(tahoe)
asm(" movl -8(fp),r12"); /* selfpc = callf frame */
asm(" movl (fp),r11");
@@ -189,8 +189,12 @@ mcount()
asm("movw sr,%0" : "=g" (s));
asm("movw #0x2700,sr");
#else
+#if defined(i386)
+ asm("cli");
+#else
s = splhigh();
#endif
+#endif
/*
* Check that frompcindex is a reasonable pc value.
* For example: signal catchers get called from the stack,
@@ -271,8 +275,12 @@ done:
#if defined(hp300)
asm("movw %0,sr" : : "g" (s));
#else
+#if defined(i386)
+ asm("sti");
+#else
splx(s);
#endif
+#endif
/* and fall through */
out:
#if defined(vax)