1 // © 2021 Qualcomm Innovation Center, Inc. All rights reserved.
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 // clang-format off
6 
7 #define PSCI_FUNCTION(fn, feat, h, ...)				\
8 subscribe smccc_call_fast_32_standard[(smccc_function_t)PSCI_FUNCTION_ ## fn];	\
9 	handler psci_ ## h ## _32(__VA_ARGS__);			\
10 	exclude_preempt_disabled.				\
11 subscribe psci_features32[PSCI_FUNCTION_ ## fn];		\
12 	constant feat.						\
13 subscribe smccc_call_fast_64_standard[(smccc_function_t)PSCI_FUNCTION_ ## fn];	\
14 	handler psci_ ## h ## _64(__VA_ARGS__);			\
15 	exclude_preempt_disabled.				\
16 subscribe psci_features64[PSCI_FUNCTION_ ## fn];		\
17 	constant feat.
18 
19 #define PSCI_FUNCTION32(fn, feat, h, ...)			\
20 subscribe smccc_call_fast_32_standard[(smccc_function_t)PSCI_FUNCTION_ ## fn];	\
21 	handler psci_ ## h(__VA_ARGS__);			\
22 	exclude_preempt_disabled.				\
23 subscribe psci_features32[PSCI_FUNCTION_ ## fn];		\
24 	constant feat.
25 
26 #define PSCI_FUNCTION_PERVM(fn, h, ...)				\
27 subscribe smccc_call_fast_32_standard[(smccc_function_t)PSCI_FUNCTION_ ## fn];	\
28 	handler psci_ ## h ## _32(__VA_ARGS__);			\
29 	exclude_preempt_disabled.				\
30 subscribe psci_features32[PSCI_FUNCTION_ ## fn];		\
31 	handler psci_ ## h ## _32_features().			\
32 subscribe smccc_call_fast_64_standard[(smccc_function_t)PSCI_FUNCTION_ ## fn];	\
33 	handler psci_ ## h ## _64(__VA_ARGS__);			\
34 	exclude_preempt_disabled.				\
35 subscribe psci_features64[PSCI_FUNCTION_ ## fn];		\
36 	handler psci_ ## h ## _64_features().			\
37 
38 #define PSCI_FUNCTION32_PERVM(fn, h, ...)			\
39 subscribe smccc_call_fast_32_standard[(smccc_function_t)PSCI_FUNCTION_ ## fn];	\
40 	handler psci_ ## h(__VA_ARGS__);			\
41 	exclude_preempt_disabled.				\
42 subscribe psci_features32[PSCI_FUNCTION_ ## fn];		\
43 	handler psci_ ## h ## _features().
44