blob: 4354eda4623a2eded9e2da65407746998e3db5a8 [file] [log] [blame]
Ken Liu91d44da2018-09-20 22:42:31 +08001/*
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 Ai93dabfd2019-12-03 13:44:45 +080010#include <stdio.h>
11
12/*
13 * CPU spin here.
14 * Note: this function is used to handle PROGRAMMER ERROR.
15 */
Edison Ai9059ea02019-11-28 13:46:14 +080016void tfm_core_panic(void);
Ken Liu91d44da2018-09-20 22:42:31 +080017
Ken Liuf250b8b2019-12-27 16:31:24 +080018/* Core assert and spin */
19#ifndef NDEBUG
20#define TFM_CORE_ASSERT(cond) \
Ken Liu91d44da2018-09-20 22:42:31 +080021 do { \
22 if (!(cond)) { \
Ken Liu91d44da2018-09-20 22:42:31 +080023 while (1) \
24 ; \
25 } \
26 } while (0)
Ken Liuf250b8b2019-12-27 16:31:24 +080027#else
28#define TFM_CORE_ASSERT(cond)
29#endif
Ken Liu91d44da2018-09-20 22:42:31 +080030
Edison Ai1e5822f2018-09-21 14:56:08 +080031/* 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 Liuf250b8b2019-12-27 16:31:24 +080035#endif /* __TFM_UTILS_H__ */