6d65ffdbdf7ed865e97906de4eb4c2eb92fd70bf
[coreboot.git] / src / include / assert.h
1 /*
2  * This file is part of the coreboot project.
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 /*
22  * assert.h: Debugging macros
23  */
24
25 #ifndef __ASSERT_H_DEFINED
26 #define __ASSERT_H_DEFINED
27
28 // ROMCC doesn't support __FILE__ or __LINE__  :^{
29
30 #if CONFIG_DEBUG
31 #ifdef __PRE_RAM__
32 #define ASSERT(x)       { if (!(x)) die("ASSERT failure!\r\n"); }
33 #else
34 #define ASSERT(x)       {                               \
35                                                 if (!(x))       \
36                                                 {                       \
37                                                         printk_emerg("ASSERT failure: file '%s', line %d\n", __FILE__, __LINE__); \
38                                                         die(""); \
39                                                 }                       \
40                                         }
41 #endif          // __ROMCC__
42 #else           // !CONFIG_DEBUG
43 #define ASSERT(x)       { }
44 #endif
45
46 #ifdef __PRE_RAM__
47 #define BUG()           {       die("BUG encountered: system halted\r\n");  }
48 #else
49 #define BUG()           {                               \
50                                                 printk_emerg("BUG: file '%s', line %d\n", __FILE__, __LINE__); \
51                                                 die(""); \
52                                         }
53 #endif
54                                         
55 #endif  // __ASSERT_H_DEFINED