1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2019, Linaro Limited
4  * Copyright (c) 2021, Arm Limited
5  */
6 
7 #ifndef __KERNEL_USER_MODE_CTX_H
8 #define __KERNEL_USER_MODE_CTX_H
9 
10 #include <assert.h>
11 #include <kernel/secure_partition.h>
12 #include <kernel/stmm_sp.h>
13 #include <kernel/user_mode_ctx_struct.h>
14 #include <kernel/user_ta.h>
15 #include <stdbool.h>
16 
is_user_mode_ctx(struct ts_ctx * ctx)17 static inline bool is_user_mode_ctx(struct ts_ctx *ctx)
18 {
19 	return is_user_ta_ctx(ctx) || is_stmm_ctx(ctx) || is_sp_ctx(ctx);
20 }
21 
to_user_mode_ctx(struct ts_ctx * ctx)22 static inline struct user_mode_ctx *to_user_mode_ctx(struct ts_ctx *ctx)
23 {
24 	if (is_user_ta_ctx(ctx))
25 		return &to_user_ta_ctx(ctx)->uctx;
26 	else if (is_sp_ctx(ctx))
27 		return &to_sp_ctx(ctx)->uctx;
28 	else
29 		return &to_stmm_ctx(ctx)->uctx;
30 }
31 
32 void user_mode_ctx_print_mappings(struct user_mode_ctx *umctx);
33 
34 #endif /*__KERNEL_USER_MODE_CTX_H*/
35