1/*-
2 * ----------------------------------------------------------------------------
3 * "THE BEER-WARE LICENSE" (Revision 42):
4 * <phk@FreeBSD.org> wrote this file.  As long as you retain this notice you
5 * can do whatever you want with this stuff. If we meet some day, and you think
6 * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
7 * ----------------------------------------------------------------------------
8 *
9 * $FreeBSD$
10 *
11 */
12
13#ifndef _MACHINE_SMP_H_
14#define _MACHINE_SMP_H_
15
16#ifdef _KERNEL
17
18#ifdef SMP
19
20#ifndef LOCORE
21
22#include <x86/x86_smp.h>
23
24/* global symbols in mpboot.S */
25extern char			mptramp_start[];
26extern u_int32_t		mptramp_pagetables;
27
28/* IPI handlers */
29inthand_t
30	IDTVEC(justreturn),	/* interrupt CPU with minimum overhead */
31	IDTVEC(justreturn1_pti),
32	IDTVEC(invltlb_pti),
33	IDTVEC(invltlb_pcid_pti),
34	IDTVEC(invltlb_pcid),	/* TLB shootdowns - global, pcid */
35	IDTVEC(invltlb_invpcid_pti_pti),
36	IDTVEC(invltlb_invpcid_nopti),
37	IDTVEC(invlpg_pti),
38	IDTVEC(invlpg_invpcid_pti),
39	IDTVEC(invlpg_invpcid),
40	IDTVEC(invlpg_pcid_pti),
41	IDTVEC(invlpg_pcid),
42	IDTVEC(invlrng_pti),
43	IDTVEC(invlrng_invpcid_pti),
44	IDTVEC(invlrng_invpcid),
45	IDTVEC(invlrng_pcid_pti),
46	IDTVEC(invlrng_pcid),
47	IDTVEC(invlcache_pti),
48	IDTVEC(ipi_intr_bitmap_handler_pti),
49	IDTVEC(ipi_swi_pti),
50	IDTVEC(cpustop_pti),
51	IDTVEC(cpususpend_pti),
52	IDTVEC(rendezvous_pti);
53
54void	invltlb_pcid_handler(void);
55void	invltlb_invpcid_handler(void);
56void	invltlb_invpcid_pti_handler(void);
57void	invlpg_invpcid_handler(void);
58void	invlpg_pcid_handler(void);
59void	invlrng_invpcid_handler(void);
60void	invlrng_pcid_handler(void);
61int	native_start_all_aps(void);
62void	mp_bootaddress(vm_paddr_t *, unsigned int *);
63
64#endif /* !LOCORE */
65#endif /* SMP */
66
67#endif /* _KERNEL */
68#endif /* _MACHINE_SMP_H_ */
69