xref: /optee_os/core/include/kernel/user_mode_ctx.h (revision c185655eafaab6b4b27759812cd6633e1da9db12)
11936dfc7SJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
21936dfc7SJens Wiklander /*
31936dfc7SJens Wiklander  * Copyright (c) 2019, Linaro Limited
4*c185655eSJelle Sels  * Copyright (c) 2021, Arm Limited
51936dfc7SJens Wiklander  */
61936dfc7SJens Wiklander 
71936dfc7SJens Wiklander #ifndef __KERNEL_USER_MODE_CTX_H
81936dfc7SJens Wiklander #define __KERNEL_USER_MODE_CTX_H
91936dfc7SJens Wiklander 
101936dfc7SJens Wiklander #include <assert.h>
11*c185655eSJelle Sels #include <kernel/secure_partition.h>
12f9cd31c5SJelle Sels #include <kernel/stmm_sp.h>
131936dfc7SJens Wiklander #include <kernel/user_mode_ctx_struct.h>
141936dfc7SJens Wiklander #include <kernel/user_ta.h>
151936dfc7SJens Wiklander #include <stdbool.h>
161936dfc7SJens Wiklander 
is_user_mode_ctx(struct ts_ctx * ctx)173560d990SJens Wiklander static inline bool is_user_mode_ctx(struct ts_ctx *ctx)
181936dfc7SJens Wiklander {
19*c185655eSJelle Sels 	return is_user_ta_ctx(ctx) || is_stmm_ctx(ctx) || is_sp_ctx(ctx);
201936dfc7SJens Wiklander }
211936dfc7SJens Wiklander 
to_user_mode_ctx(struct ts_ctx * ctx)223560d990SJens Wiklander static inline struct user_mode_ctx *to_user_mode_ctx(struct ts_ctx *ctx)
231936dfc7SJens Wiklander {
241f648d54SJens Wiklander 	if (is_user_ta_ctx(ctx))
251f648d54SJens Wiklander 		return &to_user_ta_ctx(ctx)->uctx;
26*c185655eSJelle Sels 	else if (is_sp_ctx(ctx))
27*c185655eSJelle Sels 		return &to_sp_ctx(ctx)->uctx;
281f648d54SJens Wiklander 	else
29f9cd31c5SJelle Sels 		return &to_stmm_ctx(ctx)->uctx;
301936dfc7SJens Wiklander }
315343f09fSJens Wiklander 
325343f09fSJens Wiklander void user_mode_ctx_print_mappings(struct user_mode_ctx *umctx);
335343f09fSJens Wiklander 
341936dfc7SJens Wiklander #endif /*__KERNEL_USER_MODE_CTX_H*/
35