Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2018-2019, Arm Limited. All rights reserved. |
| 3 | * |
| 4 | * SPDX-License-Identifier: BSD-3-Clause |
| 5 | * |
| 6 | */ |
| 7 | #ifndef __TFM_UTILS_H__ |
| 8 | #define __TFM_UTILS_H__ |
| 9 | |
Edison Ai | 93dabfd | 2019-12-03 13:44:45 +0800 | [diff] [blame] | 10 | #include <stdio.h> |
| 11 | |
| 12 | /* |
| 13 | * CPU spin here. |
| 14 | * Note: this function is used to handle PROGRAMMER ERROR. |
| 15 | */ |
Edison Ai | 9059ea0 | 2019-11-28 13:46:14 +0800 | [diff] [blame] | 16 | void tfm_core_panic(void); |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 17 | |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 18 | /* Core assert and spin */ |
| 19 | #ifndef NDEBUG |
| 20 | #define TFM_CORE_ASSERT(cond) \ |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 21 | do { \ |
| 22 | if (!(cond)) { \ |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 23 | while (1) \ |
| 24 | ; \ |
| 25 | } \ |
| 26 | } while (0) |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 27 | #else |
| 28 | #define TFM_CORE_ASSERT(cond) |
| 29 | #endif |
Ken Liu | 91d44da | 2018-09-20 22:42:31 +0800 | [diff] [blame] | 30 | |
Edison Ai | 1e5822f | 2018-09-21 14:56:08 +0800 | [diff] [blame] | 31 | /* Get container structure start address from member */ |
| 32 | #define TFM_GET_CONTAINER_PTR(ptr, type, member) \ |
| 33 | (type *)((unsigned long)(ptr) - offsetof(type, member)) |
| 34 | |
Ken Liu | f250b8b | 2019-12-27 16:31:24 +0800 | [diff] [blame] | 35 | #endif /* __TFM_UTILS_H__ */ |