1 // © 2021 Qualcomm Innovation Center, Inc. All rights reserved.
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 #define vpm__vcpus_state_foreach(cpu_index, cpu_state, vcpus_state, i)         \
6 	cpu_state =                                                            \
7 		(psci_cpu_state_t)(uint32_t)(vcpus_state &                     \
8 					     PSCI_VCPUS_STATE_PER_VCPU_MASK);  \
9 	cpu_index = 0;                                                         \
10 	for (index_t i = 0; i < PSCI_VCPUS_STATE_MAX_INDEX;                    \
11 	     i += PSCI_VCPUS_STATE_PER_VCPU_BITS, cpu_index++,                 \
12 		     cpu_state =                                               \
13 			     (psci_cpu_state_t)(uint32_t)((vcpus_state >> i) & \
14 							  PSCI_VCPUS_STATE_PER_VCPU_MASK))
15 
16 #define vpm_vcpus_state_foreach(cpu_index, cpu_state, vcpus_state)             \
17 	vpm__vcpus_state_foreach((cpu_index), (cpu_state), (vcpus_state),      \
18 				 util_cpp_unique_ident(i))
19 
20 error_t
21 vpm_group_configure(vpm_group_t *vpm_group, vpm_group_option_flags_t flags);
22 
23 error_t
24 vpm_attach(vpm_group_t *pg, thread_t *thread, index_t index);
25 
26 error_t
27 vpm_bind_virq(vpm_group_t *vpm_group, vic_t *vic, virq_t virq);
28 
29 void
30 vpm_unbind_virq(vpm_group_t *vpm_group);
31 
32 vpm_state_t
33 vpm_get_state(vpm_group_t *vpm_group);
34