Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 1 | /* |
Ken Liu | c25558c | 2021-05-20 15:31:28 +0800 | [diff] [blame] | 2 | * Copyright (c) 2018-2021, Arm Limited. All rights reserved. |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 3 | * |
4 | * SPDX-License-Identifier: BSD-3-Clause | ||||
5 | * | ||||
6 | */ | ||||
7 | #ifndef __TFM_UTILS_H__ | ||||
8 | #define __TFM_UTILS_H__ | ||||
9 | |||||
Summer Qin | 8321492 | 2020-06-22 15:07:08 +0800 | [diff] [blame] | 10 | #include <stdbool.h> |
Edison Ai | 93dabfd | 2019-12-03 13:44:45 +0800 | [diff] [blame] | 11 | #include <stdio.h> |
Jimmy Brisson | a9052d7 | 2021-06-21 11:46:45 -0500 | [diff] [blame^] | 12 | #include "tfm_spm_log.h" |
Edison Ai | 93dabfd | 2019-12-03 13:44:45 +0800 | [diff] [blame] | 13 | |
14 | /* | ||||
15 | * CPU spin here. | ||||
16 | * Note: this function is used to handle PROGRAMMER ERROR. | ||||
17 | */ | ||||
Edison Ai | 9059ea0 | 2019-11-28 13:46:14 +0800 | [diff] [blame] | 18 | void tfm_core_panic(void); |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 19 | |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 20 | /* Core assert and spin */ |
21 | #ifndef NDEBUG | ||||
22 | #define TFM_CORE_ASSERT(cond) \ | ||||
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 23 | do { \ |
24 | if (!(cond)) { \ | ||||
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 25 | while (1) \ |
26 | ; \ | ||||
27 | } \ | ||||
28 | } while (0) | ||||
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 29 | #else |
30 | #define TFM_CORE_ASSERT(cond) | ||||
31 | #endif | ||||
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 32 | |
Edison Ai | 1e5822f | 2018-09-21 14:56:08 +0800 | [diff] [blame] | 33 | /* Get container structure start address from member */ |
Ken Liu | c25558c | 2021-05-20 15:31:28 +0800 | [diff] [blame] | 34 | #define TO_CONTAINER(ptr, type, member) \ |
Edison Ai | 1e5822f | 2018-09-21 14:56:08 +0800 | [diff] [blame] | 35 | (type *)((unsigned long)(ptr) - offsetof(type, member)) |
36 | |||||
Antonio de Angelis | fa5d460 | 2021-06-09 16:11:11 +0100 | [diff] [blame] | 37 | /* FixMe: Replace ERROR_MSG() in platform code with a suitable API */ |
38 | #define ERROR_MSG(msg) SPMLOG_ERRMSG(msg "\r\n") | ||||
Summer Qin | 8321492 | 2020-06-22 15:07:08 +0800 | [diff] [blame] | 39 | |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 40 | #endif /* __TFM_UTILS_H__ */ |