d34d557e06250b138f343777985dbff95e01daf0
[coreboot.git] / src / include / assert.h
1 /*
2  * assert.h: Debugging macros
3  *
4  * Copyright (C) 2005 Digital Design Corporation
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  */
20
21 #ifndef __ASSERT_H_DEFINED
22 #define __ASSERT_H_DEFINED
23
24 // ROMCC doesn't support __FILE__ or __LINE__  :^{
25
26 #if CONFIG_DEBUG
27 #ifdef __ROMCC__
28 #define ASSERT(x)       { if (!(x)) die("ASSERT failure!\r\n"); }
29 #else
30 #define ASSERT(x)       {                               \
31                                                 if (!(x))       \
32                                                 {                       \
33                                                         printk_emerg("ASSERT failure: file '%s', line %d\n", __FILE__, __LINE__); \
34                                                         die(""); \
35                                                 }                       \
36                                         }
37 #endif          // __ROMCC__
38 #else           // !CONFIG_DEBUG
39 #define ASSERT(x)       { }
40 #endif
41
42 #ifdef __ROMCC__
43 #define BUG()           {       die("BUG encountered: system halted\r\n");  }
44 #else
45 #define BUG()           {                               \
46                                                 printk_emerg("BUG: file '%s', line %d\n", __FILE__, __LINE__); \
47                                                 die(""); \
48                                         }
49 #endif
50                                         
51 #endif  // __ASSERT_H_DEFINED