diff options
author | jhb <jhb@FreeBSD.org> | 2005-12-05 22:25:41 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-12-05 22:25:41 +0000 |
commit | aa9c5f3cddee28919e68f86222476ba0e47fb54e (patch) | |
tree | e215c16595ce58fd23d358ec3825f1d7a3420d8c /sys/i386/include/smp.h | |
parent | 3105978a7ad705a08753b188b0131bd15be5cdca (diff) | |
download | FreeBSD-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.h | 8 |
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); |