xref: /optee_os/ldelf/sys.h (revision 7509ff7ce5e5a7679319e6fa059b71dd6f6cc8b9)
1*7509ff7cSJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
2*7509ff7cSJens Wiklander /*
3*7509ff7cSJens Wiklander  * Copyright (c) 2019, Linaro Limited
4*7509ff7cSJens Wiklander  */
5*7509ff7cSJens Wiklander 
6*7509ff7cSJens Wiklander #ifndef SYS_H
7*7509ff7cSJens Wiklander #define SYS_H
8*7509ff7cSJens Wiklander 
9*7509ff7cSJens Wiklander #include <compiler.h>
10*7509ff7cSJens Wiklander #include <stddef.h>
11*7509ff7cSJens Wiklander #include <tee_api_types.h>
12*7509ff7cSJens Wiklander #include <trace.h>
13*7509ff7cSJens Wiklander #include <types_ext.h>
14*7509ff7cSJens Wiklander #include <utee_syscalls.h>
15*7509ff7cSJens Wiklander 
16*7509ff7cSJens Wiklander #if defined(CFG_TEE_CORE_DEBUG)
17*7509ff7cSJens Wiklander #define panic()    __panic(__FILE__, __LINE__, __func__)
18*7509ff7cSJens Wiklander #else
19*7509ff7cSJens Wiklander #define panic()    __panic(NULL, 0, NULL)
20*7509ff7cSJens Wiklander #endif
21*7509ff7cSJens Wiklander 
22*7509ff7cSJens Wiklander /* A small page is the smallest unit of memory that can be mapped */
23*7509ff7cSJens Wiklander #define SMALL_PAGE_SHIFT	12
24*7509ff7cSJens Wiklander #define SMALL_PAGE_MASK		0x00000fff
25*7509ff7cSJens Wiklander #define SMALL_PAGE_SIZE		0x00001000
26*7509ff7cSJens Wiklander 
27*7509ff7cSJens Wiklander void __noreturn __panic(const char *file, const int line, const char *func);
28*7509ff7cSJens Wiklander void __noreturn sys_return_cleanup(void);
29*7509ff7cSJens Wiklander 
30*7509ff7cSJens Wiklander #define err(res, ...) \
31*7509ff7cSJens Wiklander 	do { \
32*7509ff7cSJens Wiklander 		trace_printf_helper(TRACE_ERROR, true, __VA_ARGS__); \
33*7509ff7cSJens Wiklander 		utee_return(res); \
34*7509ff7cSJens Wiklander 	} while (0)
35*7509ff7cSJens Wiklander 
36*7509ff7cSJens Wiklander TEE_Result sys_map_zi(size_t num_bytes, uint32_t flags, vaddr_t *va,
37*7509ff7cSJens Wiklander 		      size_t pad_begin, size_t pad_end);
38*7509ff7cSJens Wiklander TEE_Result sys_unmap(vaddr_t va, size_t num_bytes);
39*7509ff7cSJens Wiklander TEE_Result sys_open_ta_bin(const TEE_UUID *uuid, uint32_t *handle);
40*7509ff7cSJens Wiklander TEE_Result sys_close_ta_bin(uint32_t handle);
41*7509ff7cSJens Wiklander TEE_Result sys_map_ta_bin(vaddr_t *va, size_t num_bytes, uint32_t flags,
42*7509ff7cSJens Wiklander 			  uint32_t handle, size_t offs, size_t pad_begin,
43*7509ff7cSJens Wiklander 			  size_t pad_end);
44*7509ff7cSJens Wiklander TEE_Result sys_copy_from_ta_bin(void *dst, size_t num_bytes, uint32_t handle,
45*7509ff7cSJens Wiklander 				size_t offs);
46*7509ff7cSJens Wiklander TEE_Result sys_set_prot(vaddr_t va, size_t num_bytes, uint32_t flags);
47*7509ff7cSJens Wiklander 
48*7509ff7cSJens Wiklander #endif /*SYS_H*/
49