1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park */ 6*54fd6939SJiyong Park 7*54fd6939SJiyong Park #ifndef ASSERT_H 8*54fd6939SJiyong Park #define ASSERT_H 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park #include <cdefs.h> 11*54fd6939SJiyong Park 12*54fd6939SJiyong Park #include <platform_def.h> 13*54fd6939SJiyong Park 14*54fd6939SJiyong Park #include <common/debug.h> 15*54fd6939SJiyong Park 16*54fd6939SJiyong Park #ifndef PLAT_LOG_LEVEL_ASSERT 17*54fd6939SJiyong Park #define PLAT_LOG_LEVEL_ASSERT LOG_LEVEL 18*54fd6939SJiyong Park #endif 19*54fd6939SJiyong Park 20*54fd6939SJiyong Park #if ENABLE_ASSERTIONS 21*54fd6939SJiyong Park # if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE 22*54fd6939SJiyong Park # define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e)) 23*54fd6939SJiyong Park # elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO 24*54fd6939SJiyong Park # define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__)) 25*54fd6939SJiyong Park # else 26*54fd6939SJiyong Park # define assert(e) ((e) ? (void)0 : __assert()) 27*54fd6939SJiyong Park # endif 28*54fd6939SJiyong Park #else 29*54fd6939SJiyong Park #define assert(e) ((void)0) 30*54fd6939SJiyong Park #endif /* ENABLE_ASSERTIONS */ 31*54fd6939SJiyong Park 32*54fd6939SJiyong Park #if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE 33*54fd6939SJiyong Park void __dead2 __assert(const char *file, unsigned int line, 34*54fd6939SJiyong Park const char *assertion); 35*54fd6939SJiyong Park #elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO 36*54fd6939SJiyong Park void __dead2 __assert(const char *file, unsigned int line); 37*54fd6939SJiyong Park #else 38*54fd6939SJiyong Park void __dead2 __assert(void); 39*54fd6939SJiyong Park #endif 40*54fd6939SJiyong Park 41*54fd6939SJiyong Park #endif /* ASSERT_H */ 42