summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2002-07-11 08:31:10 +0000
committerpeter <peter@FreeBSD.org>2002-07-11 08:31:10 +0000
commitcfe10c5fa08af21fd6663198e2a3ceed2ccc8b2e (patch)
treec8d0480b5ab8ca89c1dafc92e47e5ff8d92fd318 /sys/amd64
parent6fd5b8fb09bfaa9f1accb465623160ea8a31536d (diff)
downloadFreeBSD-src-cfe10c5fa08af21fd6663198e2a3ceed2ccc8b2e.zip
FreeBSD-src-cfe10c5fa08af21fd6663198e2a3ceed2ccc8b2e.tar.gz
Bah, move the invltlb counter to C code and hook a debug sysctl onto it.
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/apic_vector.S8
-rw-r--r--sys/amd64/amd64/mp_machdep.c6
-rw-r--r--sys/amd64/amd64/mptable.c6
-rw-r--r--sys/amd64/include/mptable.h6
4 files changed, 19 insertions, 7 deletions
diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S
index 1b9933b..8490b1b 100644
--- a/sys/amd64/amd64/apic_vector.S
+++ b/sys/amd64/amd64/apic_vector.S
@@ -275,7 +275,7 @@ Xinvltlb:
movl PCPU(CPUID), %eax
popl %fs
ss
- incl _xhits(,%eax,4)
+ incl xhits(,%eax,4)
#endif /* COUNT_XINVLTLB_HITS */
movl %cr3, %eax /* invalidate the TLB */
@@ -570,12 +570,6 @@ Xrendezvous:
.data
-#ifdef COUNT_XINVLTLB_HITS
- .globl _xhits
-_xhits:
- .space (MAXCPU * 4), 0
-#endif /* COUNT_XINVLTLB_HITS */
-
.globl apic_pin_trigger
apic_pin_trigger:
.long 0
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
index cedf0d6..63fec0e 100644
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -2190,6 +2190,12 @@ start_ap(int logical_cpu, u_int boot_addr)
return 0; /* return FAILURE */
}
+#if defined(APIC_IO) && defined(COUNT_XINVLTLB_HITS)
+u_int xhits[MAXCPU];
+SYSCTL_OPAQUE(_debug, OID_AUTO, xhits, CTLFLAG_RW, &xhits, sizeof(xhits),
+ "IU", "");
+#endif
+
/*
* Flush the TLB on all other CPU's
*
diff --git a/sys/amd64/amd64/mptable.c b/sys/amd64/amd64/mptable.c
index cedf0d6..63fec0e 100644
--- a/sys/amd64/amd64/mptable.c
+++ b/sys/amd64/amd64/mptable.c
@@ -2190,6 +2190,12 @@ start_ap(int logical_cpu, u_int boot_addr)
return 0; /* return FAILURE */
}
+#if defined(APIC_IO) && defined(COUNT_XINVLTLB_HITS)
+u_int xhits[MAXCPU];
+SYSCTL_OPAQUE(_debug, OID_AUTO, xhits, CTLFLAG_RW, &xhits, sizeof(xhits),
+ "IU", "");
+#endif
+
/*
* Flush the TLB on all other CPU's
*
diff --git a/sys/amd64/include/mptable.h b/sys/amd64/include/mptable.h
index cedf0d6..63fec0e 100644
--- a/sys/amd64/include/mptable.h
+++ b/sys/amd64/include/mptable.h
@@ -2190,6 +2190,12 @@ start_ap(int logical_cpu, u_int boot_addr)
return 0; /* return FAILURE */
}
+#if defined(APIC_IO) && defined(COUNT_XINVLTLB_HITS)
+u_int xhits[MAXCPU];
+SYSCTL_OPAQUE(_debug, OID_AUTO, xhits, CTLFLAG_RW, &xhits, sizeof(xhits),
+ "IU", "");
+#endif
+
/*
* Flush the TLB on all other CPU's
*
OpenPOWER on IntegriCloud