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