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