summaryrefslogtreecommitdiffstats
path: root/sys/i386/include/smp.h
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2005-12-05 22:25:41 +0000
committerjhb <jhb@FreeBSD.org>2005-12-05 22:25:41 +0000
commitaa9c5f3cddee28919e68f86222476ba0e47fb54e (patch)
treee215c16595ce58fd23d358ec3825f1d7a3420d8c /sys/i386/include/smp.h
parent3105978a7ad705a08753b188b0131bd15be5cdca (diff)
downloadFreeBSD-src-aa9c5f3cddee28919e68f86222476ba0e47fb54e.zip
FreeBSD-src-aa9c5f3cddee28919e68f86222476ba0e47fb54e.tar.gz
- Move the code to deal with handling an IPI_STOP IPI out of
ipi_nmi_handler() and into a new cpustop_handler() function. Change the Xcpustop IPI_STOP handler to call this function instead of duplicating all the same logic in assembly. - EOI the local APIC for the lapic timer interrupt in C rather than assembly. - Bump the lazypmap IPI counter if COUNT_IPIS is defined in C rather than assembly.
Diffstat (limited to 'sys/i386/include/smp.h')
-rw-r--r--sys/i386/include/smp.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/i386/include/smp.h b/sys/i386/include/smp.h
index 9cb5673..e197fb2 100644
--- a/sys/i386/include/smp.h
+++ b/sys/i386/include/smp.h
@@ -35,6 +35,13 @@ extern int mp_naps;
extern int boot_cpu_id;
extern struct pcb stoppcbs[];
extern struct mtx smp_tlb_mtx;
+#ifdef COUNT_IPIS
+extern u_long *ipi_invltlb_counts[MAXCPU];
+extern u_long *ipi_invlrng_counts[MAXCPU];
+extern u_long *ipi_invlpg_counts[MAXCPU];
+extern u_long *ipi_rendezvous_counts[MAXCPU];
+extern u_long *ipi_lazypmap_counts[MAXCPU];
+#endif
/* IPI handlers */
inthand_t
@@ -48,6 +55,7 @@ inthand_t
/* functions in mp_machdep.c */
void cpu_add(u_int apic_id, char boot_cpu);
+void cpustop_handler(void);
void init_secondary(void);
void ipi_selected(u_int cpus, u_int ipi);
void ipi_all(u_int ipi);
OpenPOWER on IntegriCloud