1 // © 2021 Qualcomm Innovation Center, Inc. All rights reserved.
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 // Platform routines for raising and handling hardware IPIs.
6 //
7 // There are two variants of this API: one for when the platform has enough
8 // separate IPI lines to allocate one per registered reason, and another for
9 // when it doesn't. They are similar, but the latter does not take reason
10 // arguments and does not have mask and unmask calls.
11 //
12 // The semantics of the individual calls are similar to the high-level API in
13 // ipi.h, but they are not expected to provide any mechanism for fast-path
14 // delivery without raising a hardware interrupt, nor for multiplexing when
15 // there are more possible IPI reasons than physical IPI lines.
16 
17 #include <hypconstants.h>
18 
19 #if PLATFORM_IPI_LINES > ENUM_IPI_REASON_MAX_VALUE
20 void
21 platform_ipi_others(ipi_reason_t ipi);
22 
23 void
24 platform_ipi_one(ipi_reason_t ipi, cpu_index_t cpu);
25 
26 void
27 platform_ipi_mask(ipi_reason_t ipi);
28 
29 void
30 platform_ipi_unmask(ipi_reason_t ipi);
31 
32 void
33 platform_ipi_clear(ipi_reason_t ipi);
34 #else
35 void
36 platform_ipi_others(void);
37 
38 void
39 platform_ipi_one(cpu_index_t cpu);
40 #endif
41