blob: a4d8cfd388d79e984767880708a1e00762726da9 [file] [log] [blame]
Mate Toth-Pal2611c552023-02-28 10:28:32 +01001/*
2 * SPDX-License-Identifier: BSD-3-Clause
3 * SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
4 */
5
6#include <host_rmi_wrappers.h>
7
8/* Declaring SMC handler */
9void handle_ns_smc(unsigned long function_id,
10 unsigned long arg0,
11 unsigned long arg1,
12 unsigned long arg2,
13 unsigned long arg3,
14 unsigned long arg4,
15 unsigned long arg5,
16 struct smc_result *ret);
17
18void host_rmi_granule_delegate(void *granule_address, struct smc_result *ret)
19{
20 handle_ns_smc(SMC_RMM_GRANULE_DELEGATE,
21 (uintptr_t)granule_address,
22 0, 0, 0, 0, 0,
23 ret);
24}
25
26void host_rmi_granule_undelegate(void *granule_address, struct smc_result *ret)
27{
28 handle_ns_smc(SMC_RMM_GRANULE_UNDELEGATE,
29 (uintptr_t)granule_address,
30 0, 0, 0, 0, 0,
31 ret);
32}
33
34void host_rmi_realm_create(void *rd, void *params_ptr, struct smc_result *ret)
35{
36 handle_ns_smc(SMC_RMM_REALM_CREATE,
37 (uintptr_t)rd,
38 (uintptr_t)params_ptr,
39 0, 0, 0, 0,
40 ret);
41}
42
43void host_rmi_realm_destroy(void *rd, struct smc_result *ret)
44{
45 handle_ns_smc(SMC_RMM_REALM_DESTROY,
46 (uintptr_t)rd,
47 0, 0, 0, 0, 0,
48 ret);
49}
50
AlexeiFedorovac923c82023-04-06 15:12:04 +010051void host_rmi_rtt_create(void *rd, void *rtt, void *ipa, unsigned int level, struct smc_result *ret)
Mate Toth-Pal2611c552023-02-28 10:28:32 +010052{
53 handle_ns_smc(SMC_RMM_RTT_CREATE,
Mate Toth-Pal2611c552023-02-28 10:28:32 +010054 (uintptr_t)rd,
AlexeiFedorovac923c82023-04-06 15:12:04 +010055 (uintptr_t)rtt,
Mate Toth-Pal2611c552023-02-28 10:28:32 +010056 (uintptr_t)ipa,
57 level,
58 0, 0,
59 ret);
60}
61
62void host_rmi_rtt_destroy(void *rtt, void *rd, void *ipa,
63 unsigned int level, struct smc_result *ret)
64{
65 handle_ns_smc(SMC_RMM_RTT_DESTROY,
66 (uintptr_t)rtt,
67 (uintptr_t)rd,
68 (uintptr_t)ipa,
69 level,
70 0, 0,
71 ret);
72}
73
74void host_rmi_rec_aux_count(void *rd, struct smc_result *ret)
75{
76 handle_ns_smc(SMC_RMM_REC_AUX_COUNT,
77 (uintptr_t)rd,
78 0, 0, 0, 0, 0,
79 ret);
80}
81
AlexeiFedorovac923c82023-04-06 15:12:04 +010082void host_rmi_rec_create(void *rd, void *rec, void *params_ptr, struct smc_result *ret)
Mate Toth-Pal2611c552023-02-28 10:28:32 +010083{
84 handle_ns_smc(SMC_RMM_REC_CREATE,
Mate Toth-Pal2611c552023-02-28 10:28:32 +010085 (uintptr_t)rd,
AlexeiFedorovac923c82023-04-06 15:12:04 +010086 (uintptr_t)rec,
Mate Toth-Pal2611c552023-02-28 10:28:32 +010087 (uintptr_t)params_ptr,
88 0, 0, 0,
89 ret);
90}
91
92void host_rmi_rec_destroy(void *rec, struct smc_result *ret)
93{
94 handle_ns_smc(SMC_RMM_REC_DESTROY,
95 (uintptr_t)rec,
96 0, 0, 0, 0, 0,
97 ret);
98}
99
100void host_rmi_realm_activate(void *rd, struct smc_result *ret)
101{
102 handle_ns_smc(SMC_RMM_REALM_ACTIVATE,
103 (uintptr_t)rd,
104 0, 0, 0, 0, 0,
105 ret);
106}
107
108void host_rmi_rec_enter(void *rec, void *run_ptr, struct smc_result *ret)
109{
110 handle_ns_smc(SMC_RMM_REC_ENTER,
111 (uintptr_t)rec,
112 (uintptr_t)run_ptr,
113 0, 0, 0, 0,
114 ret);
115}
Soby Mathew76e9b452023-05-16 15:11:34 +0100116
117void host_rmi_data_create(uintptr_t data, void *rd, uintptr_t ipa,
118 uintptr_t src, struct smc_result *ret)
119{
120 handle_ns_smc(SMC_RMM_DATA_CREATE,
121 (uintptr_t)data,
122 (uintptr_t)rd, ipa, src,
123 0, 0,
124 ret);
125}
126
AlexeiFedorovac923c82023-04-06 15:12:04 +0100127void host_rmi_data_create_unknown(void *rd, uintptr_t data, uintptr_t ipa,
Soby Mathew76e9b452023-05-16 15:11:34 +0100128 struct smc_result *ret)
129{
130 handle_ns_smc(SMC_RMM_DATA_CREATE_UNKNOWN,
AlexeiFedorovac923c82023-04-06 15:12:04 +0100131 (uintptr_t)rd,
132 (uintptr_t)data, ipa,
Soby Mathew76e9b452023-05-16 15:11:34 +0100133 0, 0, 0,
134 ret);
135}
136
137void host_rmi_rtt_init_ripas(void *rd, uintptr_t ipa, int64_t level,
138 struct smc_result *ret)
139{
140 handle_ns_smc(SMC_RMM_RTT_INIT_RIPAS,
141 (uintptr_t)rd,
142 ipa, level,
143 0, 0, 0,
144 ret);
145}
146
147void host_rmi_data_destroy(void *rd, uintptr_t ipa, struct smc_result *ret)
148{
149 handle_ns_smc(SMC_RMM_DATA_DESTROY,
150 (uintptr_t)rd, ipa,
151 0, 0, 0, 0,
152 ret);
153}