diff options
author | kib <kib@FreeBSD.org> | 2015-04-24 16:20:56 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-04-24 16:20:56 +0000 |
commit | cbdd03ad965538b7e6c0ddc6c24ce955774e5118 (patch) | |
tree | ae45557c910e8084e1524fa371f6e93ddfae388b /sys/i386/include/smp.h | |
parent | 1a409ea10a7fa3b0a23130ec0b6d2a26b4f5d79d (diff) | |
download | FreeBSD-src-cbdd03ad965538b7e6c0ddc6c24ce955774e5118.zip FreeBSD-src-cbdd03ad965538b7e6c0ddc6c24ce955774e5118.tar.gz |
Move common code from sys/i386/i386/mp_machdep.c and
sys/amd64/amd64/mp_machdep.c, to the new common x86 source
sys/x86/x86/mp_x86.c.
Proposed and reviewed by: jhb
Review: https://reviews.freebsd.org/D2347
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/i386/include/smp.h')
-rw-r--r-- | sys/i386/include/smp.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/sys/i386/include/smp.h b/sys/i386/include/smp.h index 0abbca4..71f3121 100644 --- a/sys/i386/include/smp.h +++ b/sys/i386/include/smp.h @@ -36,6 +36,37 @@ extern int mp_naps; extern int boot_cpu_id; extern struct pcb stoppcbs[]; extern int cpu_apic_ids[]; +extern int bootAP; +extern void *dpcpu; +extern char *bootSTK; +extern int bootAP; +extern void *bootstacks[]; +extern volatile u_int cpu_ipi_pending[]; +extern volatile int aps_ready; +extern struct mtx ap_boot_mtx; +extern int cpu_logical; +extern int cpu_cores; +extern volatile int smp_tlb_wait; +extern u_int xhits_gbl[]; +extern u_int xhits_pg[]; +extern u_int xhits_rng[]; +extern u_int ipi_global; +extern u_int ipi_page; +extern u_int ipi_range; +extern u_int ipi_range_size; +extern u_int ipi_masked_global; +extern u_int ipi_masked_page; +extern u_int ipi_masked_range; +extern u_int ipi_masked_range_size; + +struct cpu_info { + int cpu_present:1; + int cpu_bsp:1; + int cpu_disabled:1; + int cpu_hyperthread:1; +}; +extern struct cpu_info cpu_info[]; + #ifdef COUNT_IPIS extern u_long *ipi_invltlb_counts[MAXCPU]; extern u_long *ipi_invlrng_counts[MAXCPU]; @@ -56,11 +87,13 @@ inthand_t IDTVEC(rendezvous); /* handle CPU rendezvous */ /* functions in mp_machdep.c */ +void assign_cpu_ids(void); void cpu_add(u_int apic_id, char boot_cpu); void cpustop_handler(void); #ifndef XEN void cpususpend_handler(void); #endif +void init_secondary_tail(void); void invltlb_handler(void); void invlpg_handler(void); void invlrng_handler(void); @@ -75,6 +108,7 @@ void ipi_cpu(int cpu, u_int ipi); int ipi_nmi_handler(void); void ipi_selected(cpuset_t cpus, u_int ipi); u_int mp_bootaddress(u_int); +void set_interrupt_apic_ids(void); void smp_cache_flush(void); void smp_invlpg(vm_offset_t addr); void smp_masked_invlpg(cpuset_t mask, vm_offset_t addr); @@ -83,6 +117,9 @@ void smp_masked_invlpg_range(cpuset_t mask, vm_offset_t startva, vm_offset_t endva); void smp_invltlb(void); void smp_masked_invltlb(cpuset_t mask); +void mem_range_AP_init(void); +void topo_probe(void); +void ipi_send_cpu(int cpu, u_int ipi); #ifdef XEN void ipi_to_irq_init(void); |