smp.h revision 264118
1139790Simp/*- 225164Speter * ---------------------------------------------------------------------------- 325164Speter * "THE BEER-WARE LICENSE" (Revision 42): 425164Speter * <phk@FreeBSD.org> wrote this file. As long as you retain this notice you 525164Speter * can do whatever you want with this stuff. If we meet some day, and you think 625164Speter * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp 725164Speter * ---------------------------------------------------------------------------- 825164Speter * 950477Speter * $FreeBSD: stable/10/sys/i386/include/smp.h 264118 2014-04-04 14:54:54Z royger $ 1025164Speter * 1125164Speter */ 1225164Speter 1325164Speter#ifndef _MACHINE_SMP_H_ 1425164Speter#define _MACHINE_SMP_H_ 1525164Speter 1655205Speter#ifdef _KERNEL 1725164Speter 18121996Sjhb#ifdef SMP 1925517Sfsmp 2027728Sfsmp#ifndef LOCORE 2127728Sfsmp 22121996Sjhb#include <sys/bus.h> 2376078Sjhb#include <machine/frame.h> 24121996Sjhb#include <machine/intr_machdep.h> 25121996Sjhb#include <machine/apicvar.h> 26169730Skan#include <machine/pcb.h> 2726269Sfsmp 2825164Speter/* global data in mpboot.s */ 2925164Speterextern int bootMP_size; 3025164Speter 3125164Speter/* functions in mpboot.s */ 3293018Sbdevoid bootMP(void); 3325164Speter 3425164Speter/* global data in mp_machdep.c */ 3525164Speterextern int mp_naps; 3625164Speterextern int boot_cpu_id; 3736135Steggeextern struct pcb stoppcbs[]; 38167273Sjhbextern int cpu_apic_ids[]; 39153141Sjhb#ifdef COUNT_IPIS 40153141Sjhbextern u_long *ipi_invltlb_counts[MAXCPU]; 41153141Sjhbextern u_long *ipi_invlrng_counts[MAXCPU]; 42153141Sjhbextern u_long *ipi_invlpg_counts[MAXCPU]; 43158236Sjhbextern u_long *ipi_invlcache_counts[MAXCPU]; 44153141Sjhbextern u_long *ipi_rendezvous_counts[MAXCPU]; 45153141Sjhbextern u_long *ipi_lazypmap_counts[MAXCPU]; 46153141Sjhb#endif 4725164Speter 48121996Sjhb/* IPI handlers */ 49121996Sjhbinthand_t 50121996Sjhb IDTVEC(invltlb), /* TLB shootdowns - global */ 51121996Sjhb IDTVEC(invlpg), /* TLB shootdowns - 1 page */ 52121996Sjhb IDTVEC(invlrng), /* TLB shootdowns - page range */ 53158236Sjhb IDTVEC(invlcache), /* Write back and invalidate cache */ 54138528Sups IDTVEC(ipi_intr_bitmap_handler), /* Bitmap based IPIs */ 55121996Sjhb IDTVEC(cpustop), /* CPU stops & waits to be restarted */ 56235622Siwasaki IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */ 57121996Sjhb IDTVEC(rendezvous), /* handle CPU rendezvous */ 58121996Sjhb IDTVEC(lazypmap); /* handle lazy pmap release */ 59121996Sjhb 6025164Speter/* functions in mp_machdep.c */ 61121996Sjhbvoid cpu_add(u_int apic_id, char boot_cpu); 62153141Sjhbvoid cpustop_handler(void); 63235683Siwasaki#ifndef XEN 64235622Siwasakivoid cpususpend_handler(void); 65235683Siwasaki#endif 66264118Sroygervoid invltlb_handler(void); 67264118Sroygervoid invlpg_handler(void); 68264118Sroygervoid invlrng_handler(void); 69264118Sroygervoid invlcache_handler(void); 7093018Sbdevoid init_secondary(void); 71236938Siwasakivoid ipi_startup(int apic_id, int vector); 72121996Sjhbvoid ipi_all_but_self(u_int ipi); 73184113Skmacy#ifndef XEN 74153666Sjhbvoid ipi_bitmap_handler(struct trapframe frame); 75184113Skmacy#endif 76210939Sjhbvoid ipi_cpu(int cpu, u_int ipi); 77210939Sjhbint ipi_nmi_handler(void); 78222813Sattiliovoid ipi_selected(cpuset_t cpus, u_int ipi); 79121996Sjhbu_int mp_bootaddress(u_int); 80158236Sjhbvoid smp_cache_flush(void); 8199862Spetervoid smp_invlpg(vm_offset_t addr); 82222813Sattiliovoid smp_masked_invlpg(cpuset_t mask, vm_offset_t addr); 8399862Spetervoid smp_invlpg_range(vm_offset_t startva, vm_offset_t endva); 84222813Sattiliovoid smp_masked_invlpg_range(cpuset_t mask, vm_offset_t startva, 8599862Speter vm_offset_t endva); 8699862Spetervoid smp_invltlb(void); 87222813Sattiliovoid smp_masked_invltlb(cpuset_t mask); 8825164Speter 89183344Skmacy#ifdef XEN 90183344Skmacyvoid ipi_to_irq_init(void); 91183344Skmacy#endif 9227728Sfsmp#endif /* !LOCORE */ 93121996Sjhb#endif /* SMP */ 9458755Sdillon 9555205Speter#endif /* _KERNEL */ 9625164Speter#endif /* _MACHINE_SMP_H_ */ 97