xref: /freebsd/sys/riscv/include/smp.h (revision 6ec8bf9f3d17b712d657c42f74fba936dd284d04)
117696c12SRuslan Bukin /*-
217696c12SRuslan Bukin  * Copyright (c) 2016 Ruslan Bukin <br@bsdpad.com>
317696c12SRuslan Bukin  * All rights reserved.
417696c12SRuslan Bukin  *
517696c12SRuslan Bukin  * Portions of this software were developed by SRI International and the
617696c12SRuslan Bukin  * University of Cambridge Computer Laboratory under DARPA/AFRL contract
717696c12SRuslan Bukin  * FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme.
817696c12SRuslan Bukin  *
917696c12SRuslan Bukin  * Portions of this software were developed by the University of Cambridge
1017696c12SRuslan Bukin  * Computer Laboratory as part of the CTSRD Project, with support from the
1117696c12SRuslan Bukin  * UK Higher Education Innovation Fund (HEIF).
1217696c12SRuslan Bukin  *
1317696c12SRuslan Bukin  * Redistribution and use in source and binary forms, with or without
1417696c12SRuslan Bukin  * modification, are permitted provided that the following conditions
1517696c12SRuslan Bukin  * are met:
1617696c12SRuslan Bukin  * 1. Redistributions of source code must retain the above copyright
1717696c12SRuslan Bukin  *    notice, this list of conditions and the following disclaimer.
1817696c12SRuslan Bukin  * 2. Redistributions in binary form must reproduce the above copyright
1917696c12SRuslan Bukin  *    notice, this list of conditions and the following disclaimer in the
2017696c12SRuslan Bukin  *    documentation and/or other materials provided with the distribution.
2117696c12SRuslan Bukin  *
2217696c12SRuslan Bukin  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
2317696c12SRuslan Bukin  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2417696c12SRuslan Bukin  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2517696c12SRuslan Bukin  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2617696c12SRuslan Bukin  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2717696c12SRuslan Bukin  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2817696c12SRuslan Bukin  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2917696c12SRuslan Bukin  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3017696c12SRuslan Bukin  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3117696c12SRuslan Bukin  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3217696c12SRuslan Bukin  * SUCH DAMAGE.
3317696c12SRuslan Bukin  */
3417696c12SRuslan Bukin 
3517696c12SRuslan Bukin #ifndef	_MACHINE_SMP_H_
3617696c12SRuslan Bukin #define	_MACHINE_SMP_H_
3717696c12SRuslan Bukin 
3817696c12SRuslan Bukin #include <machine/pcb.h>
3917696c12SRuslan Bukin 
40*6ec8bf9fSJessica Clarke enum {
41*6ec8bf9fSJessica Clarke 	IPI_AST,
42*6ec8bf9fSJessica Clarke 	IPI_PREEMPT,
43*6ec8bf9fSJessica Clarke 	IPI_RENDEZVOUS,
44*6ec8bf9fSJessica Clarke 	IPI_STOP,
45*6ec8bf9fSJessica Clarke 	IPI_STOP_HARD,
46*6ec8bf9fSJessica Clarke 	IPI_HARDCLOCK,
47*6ec8bf9fSJessica Clarke 	INTR_IPI_COUNT
48*6ec8bf9fSJessica Clarke };
492d53a67cSRuslan Bukin 
5017696c12SRuslan Bukin void ipi_all_but_self(u_int ipi);
5117696c12SRuslan Bukin void ipi_cpu(int cpu, u_int ipi);
5217696c12SRuslan Bukin void ipi_selected(cpuset_t cpus, u_int ipi);
5317696c12SRuslan Bukin 
5417696c12SRuslan Bukin #endif /* !_MACHINE_SMP_H_ */
55