1 /*
2  * SPDX-License-Identifier: BSD-3-Clause
3  * SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
4  */
5 
6 #ifndef SMC_HANDLER_H
7 #define SMC_HANDLER_H
8 
9 #include <smc.h>
10 
11 unsigned long smc_version(void);
12 
13 void smc_read_feature_register(unsigned long index,
14 				struct smc_result *ret_struct);
15 
16 unsigned long smc_data_create(unsigned long data_addr,
17 			      unsigned long rd_addr,
18 			      unsigned long map_addr,
19 			      unsigned long src_addr,
20 			      unsigned long flags);
21 
22 unsigned long smc_data_create_unknown(unsigned long data_addr,
23 				      unsigned long rd_addr,
24 				      unsigned long map_addr);
25 
26 unsigned long smc_data_destroy(unsigned long rd_addr,
27 			       unsigned long map_addr);
28 
29 unsigned long smc_granule_delegate(unsigned long addr);
30 
31 unsigned long smc_granule_undelegate(unsigned long addr);
32 
33 unsigned long smc_realm_activate(unsigned long rd_addr);
34 
35 unsigned long smc_realm_create(unsigned long rd_addr,
36 			     unsigned long realm_params_addr);
37 
38 unsigned long smc_realm_destroy(unsigned long rd_addr);
39 
40 unsigned long smc_rec_create(unsigned long rec_addr,
41 			     unsigned long rd_addr,
42 			     unsigned long rec_params_addr);
43 
44 unsigned long smc_rec_destroy(unsigned long rec_addr);
45 
46 unsigned long smc_rec_enter(unsigned long rec_addr,
47 			    unsigned long rec_run_addr);
48 
49 void smc_rec_aux_count(unsigned long rd_addr,
50 			struct smc_result *ret_struct);
51 
52 unsigned long smc_rtt_create(unsigned long rtt_addr,
53 			     unsigned long rd_addr,
54 			     unsigned long map_addr,
55 			     unsigned long ulevel);
56 
57 unsigned long smc_rtt_destroy(unsigned long rtt_addr,
58 			      unsigned long rd_addr,
59 			      unsigned long map_addr,
60 			      unsigned long ulevel);
61 
62 unsigned long smc_rtt_fold(unsigned long rtt_addr,
63 			   unsigned long rd_addr,
64 			   unsigned long map_addr,
65 			   unsigned long ulevel);
66 
67 unsigned long smc_rtt_map_unprotected(unsigned long rd_addr,
68 				      unsigned long map_addr,
69 				      unsigned long ulevel,
70 				      unsigned long s2tte);
71 
72 unsigned long smc_rtt_unmap_unprotected(unsigned long rd_addr,
73 					unsigned long map_addr,
74 					unsigned long ulevel);
75 
76 void smc_rtt_read_entry(unsigned long rd_addr,
77 			unsigned long map_addr,
78 			unsigned long ulevel,
79 			struct smc_result *ret_struct);
80 
81 unsigned long smc_psci_complete(unsigned long calling_rec_addr,
82 				unsigned long target_rec_addr);
83 
84 unsigned long smc_rtt_init_ripas(unsigned long rd_addr,
85 				 unsigned long map_addr,
86 				 unsigned long ulevel);
87 
88 unsigned long smc_rtt_set_ripas(unsigned long rd_addr,
89 				unsigned long rec_addr,
90 				unsigned long map_addr,
91 				unsigned long ulevel,
92 				unsigned long uripas);
93 
94 
95 #endif /* SMC_HANDLER_H */
96