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