blob: 2017d93456139b9a607466a28e7fe76c9c6f9ea9 [file] [log] [blame]
Jens Wiklander7509ff72019-05-23 17:42:08 +02001// SPDX-License-Identifier: BSD-2-Clause
2/*
3 * Copyright (c) 2019, Linaro Limited
Balint Dobszaybaa51612020-12-11 16:25:47 +01004 * Copyright (c) 2020, Arm Limited
Jens Wiklander7509ff72019-05-23 17:42:08 +02005 */
6
Balint Dobszaybaa51612020-12-11 16:25:47 +01007#include <ldelf.h>
Jens Wiklander7509ff72019-05-23 17:42:08 +02008#include <trace.h>
Jens Wiklander7509ff72019-05-23 17:42:08 +02009
10#include "sys.h"
11
12int trace_level = TRACE_LEVEL;
13const char trace_ext_prefix[] = "LD";
14
Jens Wiklander7509ff72019-05-23 17:42:08 +020015void __panic(const char *file __maybe_unused, const int line __maybe_unused,
16 const char *func __maybe_unused)
17{
18 if (!file && !func)
19 EMSG_RAW("Panic");
20 else
21 EMSG_RAW("Panic at %s:%d %s%s%s",
22 file ? file : "?", file ? line : 0,
23 func ? "<" : "", func ? func : "", func ? ">" : "");
24
Balint Dobszaybaa51612020-12-11 16:25:47 +010025 _ldelf_panic(1);
Jens Wiklander7509ff72019-05-23 17:42:08 +020026 /*NOTREACHED*/
27 while (true)
28 ;
29}
30
31void sys_return_cleanup(void)
32{
Balint Dobszaybaa51612020-12-11 16:25:47 +010033 _ldelf_return(0);
Jens Wiklander7509ff72019-05-23 17:42:08 +020034 /*NOTREACHED*/
35 while (true)
36 ;
37}
38
Jens Wiklander7509ff72019-05-23 17:42:08 +020039TEE_Result sys_map_zi(size_t num_bytes, uint32_t flags, vaddr_t *va,
40 size_t pad_begin, size_t pad_end)
41{
Balint Dobszaybaa51612020-12-11 16:25:47 +010042 return _ldelf_map_zi(va, num_bytes, pad_begin, pad_end, flags);
Jens Wiklander7509ff72019-05-23 17:42:08 +020043}
44
45TEE_Result sys_unmap(vaddr_t va, size_t num_bytes)
46{
Balint Dobszaybaa51612020-12-11 16:25:47 +010047 return _ldelf_unmap(va, num_bytes);
Jens Wiklander7509ff72019-05-23 17:42:08 +020048}
49
50TEE_Result sys_open_ta_bin(const TEE_UUID *uuid, uint32_t *handle)
51{
Balint Dobszaybaa51612020-12-11 16:25:47 +010052 return _ldelf_open_bin(uuid, sizeof(TEE_UUID), handle);
Jens Wiklander7509ff72019-05-23 17:42:08 +020053}
54
55TEE_Result sys_close_ta_bin(uint32_t handle)
56{
Balint Dobszaybaa51612020-12-11 16:25:47 +010057 return _ldelf_close_bin(handle);
Jens Wiklander7509ff72019-05-23 17:42:08 +020058}
59
60TEE_Result sys_map_ta_bin(vaddr_t *va, size_t num_bytes, uint32_t flags,
61 uint32_t handle, size_t offs, size_t pad_begin,
62 size_t pad_end)
63{
Balint Dobszaybaa51612020-12-11 16:25:47 +010064 return _ldelf_map_bin(va, num_bytes, handle, offs,
65 pad_begin, pad_end, flags);
Jens Wiklander7509ff72019-05-23 17:42:08 +020066}
67
68
69TEE_Result sys_copy_from_ta_bin(void *dst, size_t num_bytes, uint32_t handle,
70 size_t offs)
71{
Balint Dobszaybaa51612020-12-11 16:25:47 +010072 return _ldelf_cp_from_bin(dst, offs, num_bytes, handle);
Jens Wiklander7509ff72019-05-23 17:42:08 +020073}
74
75TEE_Result sys_set_prot(vaddr_t va, size_t num_bytes, uint32_t flags)
76{
Balint Dobszaybaa51612020-12-11 16:25:47 +010077 return _ldelf_set_prot(va, num_bytes, flags);
Jens Wiklander7509ff72019-05-23 17:42:08 +020078}
Jens Wiklander88796f82019-06-12 14:30:45 +020079
80TEE_Result sys_remap(vaddr_t old_va, vaddr_t *new_va, size_t num_bytes,
81 size_t pad_begin, size_t pad_end)
82{
Balint Dobszaybaa51612020-12-11 16:25:47 +010083 return _ldelf_remap(old_va, new_va, num_bytes, pad_begin, pad_end);
84}
Jens Wiklander88796f82019-06-12 14:30:45 +020085
Balint Dobszaybaa51612020-12-11 16:25:47 +010086TEE_Result sys_gen_random_num(void *buf, size_t blen)
87{
88 return _ldelf_gen_rnd_num(buf, blen);
Jens Wiklander88796f82019-06-12 14:30:45 +020089}