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