x86_smp.h (7648bc9fee8dec6cb3c4941e0165a930fbe8dcb0) x86_smp.h (3b23ffe27185fbc4c57c76db11039cd8d51eece6)
1/*-
2 * SPDX-License-Identifier: Beerware
3 *
4 * ----------------------------------------------------------------------------
5 * "THE BEER-WARE LICENSE" (Revision 42):
6 * <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
7 * can do whatever you want with this stuff. If we meet some day, and you think
8 * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp

--- 70 unchanged lines hidden (view full) ---

79 IDTVEC(invlpg), /* TLB shootdowns - 1 page */
80 IDTVEC(invlrng), /* TLB shootdowns - page range */
81 IDTVEC(invlcache), /* Write back and invalidate cache */
82 IDTVEC(ipi_intr_bitmap_handler), /* Bitmap based IPIs */
83 IDTVEC(cpustop), /* CPU stops & waits to be restarted */
84 IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */
85 IDTVEC(rendezvous); /* handle CPU rendezvous */
86
1/*-
2 * SPDX-License-Identifier: Beerware
3 *
4 * ----------------------------------------------------------------------------
5 * "THE BEER-WARE LICENSE" (Revision 42):
6 * <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
7 * can do whatever you want with this stuff. If we meet some day, and you think
8 * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp

--- 70 unchanged lines hidden (view full) ---

79 IDTVEC(invlpg), /* TLB shootdowns - 1 page */
80 IDTVEC(invlrng), /* TLB shootdowns - page range */
81 IDTVEC(invlcache), /* Write back and invalidate cache */
82 IDTVEC(ipi_intr_bitmap_handler), /* Bitmap based IPIs */
83 IDTVEC(cpustop), /* CPU stops & waits to be restarted */
84 IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */
85 IDTVEC(rendezvous); /* handle CPU rendezvous */
86
87typedef void (*smp_invl_cb_t)(struct pmap *, vm_offset_t addr1,
88 vm_offset_t addr2);
89
87/* functions in x86_mp.c */
88void assign_cpu_ids(void);
89void cpu_add(u_int apic_id, char boot_cpu);
90void cpustop_handler(void);
91void cpususpend_handler(void);
92void alloc_ap_trampoline(vm_paddr_t *physmap, unsigned int *physmap_idx);
93void init_secondary_tail(void);
94void invltlb_handler(void);
95void invlpg_handler(void);
96void invlrng_handler(void);
97void invlcache_handler(void);
98void init_secondary(void);
99void ipi_startup(int apic_id, int vector);
100void ipi_all_but_self(u_int ipi);
101void ipi_bitmap_handler(struct trapframe frame);
102void ipi_cpu(int cpu, u_int ipi);
103int ipi_nmi_handler(void);
104void ipi_selected(cpuset_t cpus, u_int ipi);
105void set_interrupt_apic_ids(void);
90/* functions in x86_mp.c */
91void assign_cpu_ids(void);
92void cpu_add(u_int apic_id, char boot_cpu);
93void cpustop_handler(void);
94void cpususpend_handler(void);
95void alloc_ap_trampoline(vm_paddr_t *physmap, unsigned int *physmap_idx);
96void init_secondary_tail(void);
97void invltlb_handler(void);
98void invlpg_handler(void);
99void invlrng_handler(void);
100void invlcache_handler(void);
101void init_secondary(void);
102void ipi_startup(int apic_id, int vector);
103void ipi_all_but_self(u_int ipi);
104void ipi_bitmap_handler(struct trapframe frame);
105void ipi_cpu(int cpu, u_int ipi);
106int ipi_nmi_handler(void);
107void ipi_selected(cpuset_t cpus, u_int ipi);
108void set_interrupt_apic_ids(void);
106void smp_cache_flush(void);
107void smp_masked_invlpg(cpuset_t mask, vm_offset_t addr, struct pmap *pmap);
109void smp_cache_flush(smp_invl_cb_t curcpu_cb);
110void smp_masked_invlpg(cpuset_t mask, vm_offset_t addr, struct pmap *pmap,
111 smp_invl_cb_t curcpu_cb);
108void smp_masked_invlpg_range(cpuset_t mask, vm_offset_t startva,
112void smp_masked_invlpg_range(cpuset_t mask, vm_offset_t startva,
109 vm_offset_t endva, struct pmap *pmap);
110void smp_masked_invltlb(cpuset_t mask, struct pmap *pmap);
113 vm_offset_t endva, struct pmap *pmap, smp_invl_cb_t curcpu_cb);
114void smp_masked_invltlb(cpuset_t mask, struct pmap *pmap,
115 smp_invl_cb_t curcpu_cb);
111void mem_range_AP_init(void);
112void topo_probe(void);
113void ipi_send_cpu(int cpu, u_int ipi);
114
115#endif
116void mem_range_AP_init(void);
117void topo_probe(void);
118void ipi_send_cpu(int cpu, u_int ipi);
119
120#endif