1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3 * Copyright (c) 2021, Arm Limited.
4 */
5 #ifndef __KERNEL_SPMC_SP_HANDLER_H
6 #define __KERNEL_SPMC_SP_HANDLER_H
7
8 #include <assert.h>
9 #include <kernel/secure_partition.h>
10 #include <kernel/user_mode_ctx_struct.h>
11 #include <tee_api_types.h>
12 #include <tee/entry_std.h>
13
14 void spmc_sp_thread_entry(uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3);
15 void spmc_sp_msg_handler(struct thread_smc_1_2_regs *args,
16 struct sp_session *caller_sp);
17 bool ffa_mem_reclaim(struct thread_smc_1_2_regs *args,
18 struct sp_session *caller_sp);
19
20 #ifdef CFG_SECURE_PARTITION
21 int spmc_sp_start_thread(struct thread_smc_1_2_regs *args);
22 int spmc_sp_add_share(struct ffa_mem_transaction_x *mem_trans,
23 struct ffa_rxtx *rxtx, size_t blen, size_t flen,
24 uint64_t *global_handle, struct sp_session *owner_sp);
25 void spmc_sp_set_to_preempted(struct ts_session *ts_sess);
26 int spmc_sp_resume_from_preempted(uint16_t endpoint_id, uint16_t thread_id);
27 #else
28 static inline int
spmc_sp_start_thread(struct thread_smc_1_2_regs * args __unused)29 spmc_sp_start_thread(struct thread_smc_1_2_regs *args __unused)
30 {
31 return FFA_INVALID_PARAMETERS;
32 }
33
34 static inline int
spmc_sp_add_share(struct ffa_mem_transaction_x * mem_trans __unused,struct ffa_rxtx * rxtx __unused,size_t blen __unused,size_t flen __unused,uint64_t * global_handle __unused,struct sp_session * owner_sp __unused)35 spmc_sp_add_share(struct ffa_mem_transaction_x *mem_trans __unused,
36 struct ffa_rxtx *rxtx __unused, size_t blen __unused,
37 size_t flen __unused, uint64_t *global_handle __unused,
38 struct sp_session *owner_sp __unused)
39 {
40 return FFA_NOT_SUPPORTED;
41 }
42
spmc_sp_set_to_preempted(struct ts_session * ts_sess __unused)43 static inline void spmc_sp_set_to_preempted(struct ts_session *ts_sess __unused)
44 {
45 }
46
spmc_sp_resume_from_preempted(uint16_t endpoint_id __unused,uint16_t thread_id __unused)47 static inline int spmc_sp_resume_from_preempted(uint16_t endpoint_id __unused,
48 uint16_t thread_id __unused)
49 {
50 return FFA_NOT_SUPPORTED;
51 }
52 #endif
53
54 #endif /* __KERNEL_SPMC_SP_HANDLER_H */
55