blob: 685f3c5fd1093c5b7cb7decb29956fc199e777df [file] [log] [blame]
Soby Mathewb4c6df42022-11-09 11:13:29 +00001/*
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
11unsigned long smc_version(void);
12
13void smc_read_feature_register(unsigned long index,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010014 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000015
AlexeiFedorovac923c82023-04-06 15:12:04 +010016unsigned long smc_data_create(unsigned long rd_addr,
17 unsigned long data_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000018 unsigned long map_addr,
19 unsigned long src_addr,
20 unsigned long flags);
21
AlexeiFedorovac923c82023-04-06 15:12:04 +010022unsigned long smc_data_create_unknown(unsigned long rd_addr,
23 unsigned long data_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000024 unsigned long map_addr);
25
AlexeiFedorove2002be2023-04-19 17:20:12 +010026void smc_data_destroy(unsigned long rd_addr,
27 unsigned long map_addr,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010028 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000029
30unsigned long smc_granule_delegate(unsigned long addr);
31
32unsigned long smc_granule_undelegate(unsigned long addr);
33
34unsigned long smc_realm_activate(unsigned long rd_addr);
35
36unsigned long smc_realm_create(unsigned long rd_addr,
AlexeiFedorove2002be2023-04-19 17:20:12 +010037 unsigned long realm_params_addr);
Soby Mathewb4c6df42022-11-09 11:13:29 +000038
39unsigned long smc_realm_destroy(unsigned long rd_addr);
40
AlexeiFedorovac923c82023-04-06 15:12:04 +010041unsigned long smc_rec_create(unsigned long rd_addr,
42 unsigned long rec_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000043 unsigned long rec_params_addr);
44
45unsigned long smc_rec_destroy(unsigned long rec_addr);
46
47unsigned long smc_rec_enter(unsigned long rec_addr,
48 unsigned long rec_run_addr);
49
50void smc_rec_aux_count(unsigned long rd_addr,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010051 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000052
AlexeiFedorovac923c82023-04-06 15:12:04 +010053unsigned long smc_rtt_create(unsigned long rd_addr,
54 unsigned long rtt_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000055 unsigned long map_addr,
56 unsigned long ulevel);
57
AlexeiFedorove2002be2023-04-19 17:20:12 +010058void smc_rtt_destroy(unsigned long rd_addr,
59 unsigned long map_addr,
60 unsigned long ulevel,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010061 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000062
AlexeiFedorove2002be2023-04-19 17:20:12 +010063void smc_rtt_fold(unsigned long rd_addr,
64 unsigned long map_addr,
65 unsigned long ulevel,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010066 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000067
68unsigned long smc_rtt_map_unprotected(unsigned long rd_addr,
69 unsigned long map_addr,
70 unsigned long ulevel,
71 unsigned long s2tte);
72
AlexeiFedorov917eabf2023-04-24 12:20:41 +010073void smc_rtt_unmap_unprotected(unsigned long rd_addr,
74 unsigned long map_addr,
75 unsigned long ulevel,
76 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000077
78void smc_rtt_read_entry(unsigned long rd_addr,
79 unsigned long map_addr,
80 unsigned long ulevel,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010081 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000082
83unsigned long smc_psci_complete(unsigned long calling_rec_addr,
AlexeiFedorov120d7d02023-08-02 16:51:48 +010084 unsigned long target_rec_addr,
85 unsigned long status);
Soby Mathewb4c6df42022-11-09 11:13:29 +000086
AlexeiFedorov960d1612023-04-25 13:23:39 +010087void smc_rtt_init_ripas(unsigned long rd_addr,
88 unsigned long base,
89 unsigned long top,
90 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000091
AlexeiFedorov5cf35ba2023-04-25 10:02:20 +010092void smc_rtt_set_ripas(unsigned long rd_addr,
93 unsigned long rec_addr,
94 unsigned long base,
95 unsigned long top,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010096 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000097
98#endif /* SMC_HANDLER_H */