xref: /optee_os/ldelf/sys.h (revision baa5161d50da0b430760fa9e2180496c2806f839)
17509ff7cSJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
27509ff7cSJens Wiklander /*
37509ff7cSJens Wiklander  * Copyright (c) 2019, Linaro Limited
4*baa5161dSBalint Dobszay  * Copyright (c) 2020, Arm Limited
57509ff7cSJens Wiklander  */
67509ff7cSJens Wiklander 
77509ff7cSJens Wiklander #ifndef SYS_H
87509ff7cSJens Wiklander #define SYS_H
97509ff7cSJens Wiklander 
107509ff7cSJens Wiklander #include <compiler.h>
11*baa5161dSBalint Dobszay #include <ldelf_syscalls.h>
127509ff7cSJens Wiklander #include <stddef.h>
137509ff7cSJens Wiklander #include <tee_api_types.h>
147509ff7cSJens Wiklander #include <trace.h>
157509ff7cSJens Wiklander #include <types_ext.h>
167509ff7cSJens Wiklander 
177509ff7cSJens Wiklander #if defined(CFG_TEE_CORE_DEBUG)
187509ff7cSJens Wiklander #define panic()    __panic(__FILE__, __LINE__, __func__)
197509ff7cSJens Wiklander #else
207509ff7cSJens Wiklander #define panic()    __panic(NULL, 0, NULL)
217509ff7cSJens Wiklander #endif
227509ff7cSJens Wiklander 
237509ff7cSJens Wiklander /* A small page is the smallest unit of memory that can be mapped */
247509ff7cSJens Wiklander #define SMALL_PAGE_SHIFT	12
257509ff7cSJens Wiklander #define SMALL_PAGE_MASK		0x00000fff
267509ff7cSJens Wiklander #define SMALL_PAGE_SIZE		0x00001000
277509ff7cSJens Wiklander 
287509ff7cSJens Wiklander void __noreturn __panic(const char *file, const int line, const char *func);
297509ff7cSJens Wiklander void __noreturn sys_return_cleanup(void);
307509ff7cSJens Wiklander 
317509ff7cSJens Wiklander #define err(res, ...) \
327509ff7cSJens Wiklander 	do { \
337509ff7cSJens Wiklander 		trace_printf_helper(TRACE_ERROR, true, __VA_ARGS__); \
34*baa5161dSBalint Dobszay 		_ldelf_return(res); \
357509ff7cSJens Wiklander 	} while (0)
367509ff7cSJens Wiklander 
377509ff7cSJens Wiklander TEE_Result sys_map_zi(size_t num_bytes, uint32_t flags, vaddr_t *va,
387509ff7cSJens Wiklander 		      size_t pad_begin, size_t pad_end);
397509ff7cSJens Wiklander TEE_Result sys_unmap(vaddr_t va, size_t num_bytes);
407509ff7cSJens Wiklander TEE_Result sys_open_ta_bin(const TEE_UUID *uuid, uint32_t *handle);
417509ff7cSJens Wiklander TEE_Result sys_close_ta_bin(uint32_t handle);
427509ff7cSJens Wiklander TEE_Result sys_map_ta_bin(vaddr_t *va, size_t num_bytes, uint32_t flags,
437509ff7cSJens Wiklander 			  uint32_t handle, size_t offs, size_t pad_begin,
447509ff7cSJens Wiklander 			  size_t pad_end);
457509ff7cSJens Wiklander TEE_Result sys_copy_from_ta_bin(void *dst, size_t num_bytes, uint32_t handle,
467509ff7cSJens Wiklander 				size_t offs);
477509ff7cSJens Wiklander TEE_Result sys_set_prot(vaddr_t va, size_t num_bytes, uint32_t flags);
4888796f89SJens Wiklander TEE_Result sys_remap(vaddr_t old_va, vaddr_t *new_va, size_t num_bytes,
4988796f89SJens Wiklander 		     size_t pad_begin, size_t pad_end);
50*baa5161dSBalint Dobszay TEE_Result sys_gen_random_num(void *buf, size_t blen);
517509ff7cSJens Wiklander 
527509ff7cSJens Wiklander #endif /*SYS_H*/
53