xref: /arm-trusted-firmware/include/services/spmc_svc.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2022, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef SPMC_SVC_H
8*91f16700Schasinglulu #define SPMC_SVC_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #ifndef __ASSEMBLER__
11*91f16700Schasinglulu #include <stdint.h>
12*91f16700Schasinglulu 
13*91f16700Schasinglulu #include <lib/utils_def.h>
14*91f16700Schasinglulu #include <services/ffa_svc.h>
15*91f16700Schasinglulu #include <services/spm_core_manifest.h>
16*91f16700Schasinglulu 
17*91f16700Schasinglulu int spmc_setup(void);
18*91f16700Schasinglulu void spmc_populate_attrs(spmc_manifest_attribute_t *spmc_attrs);
19*91f16700Schasinglulu void *spmc_get_config_addr(void);
20*91f16700Schasinglulu 
21*91f16700Schasinglulu void spmc_set_config_addr(uintptr_t soc_fw_config);
22*91f16700Schasinglulu 
23*91f16700Schasinglulu uint64_t spmc_smc_handler(uint32_t smc_fid,
24*91f16700Schasinglulu 			  bool secure_origin,
25*91f16700Schasinglulu 			  uint64_t x1,
26*91f16700Schasinglulu 			  uint64_t x2,
27*91f16700Schasinglulu 			  uint64_t x3,
28*91f16700Schasinglulu 			  uint64_t x4,
29*91f16700Schasinglulu 			  void *cookie,
30*91f16700Schasinglulu 			  void *handle,
31*91f16700Schasinglulu 			  uint64_t flags);
32*91f16700Schasinglulu 
33*91f16700Schasinglulu static inline bool is_spmc_at_el3(void)
34*91f16700Schasinglulu {
35*91f16700Schasinglulu 	return SPMC_AT_EL3 == 1;
36*91f16700Schasinglulu }
37*91f16700Schasinglulu 
38*91f16700Schasinglulu #endif /* __ASSEMBLER__ */
39*91f16700Schasinglulu 
40*91f16700Schasinglulu #endif /* SPMC_SVC_H */
41