| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _I386_BUG_H | 
|  | 2 | #define _I386_BUG_H | 
|  | 3 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 |  | 
|  | 5 | /* | 
|  | 6 | * Tell the user there is some problem. | 
| Jeremy Fitzhardinge | 91768d6 | 2006-12-08 02:36:21 -0800 | [diff] [blame] | 7 | * The offending file and line are encoded encoded in the __bug_table section. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 8 | */ | 
|  | 9 |  | 
| Matt Mackall | c8538a7 | 2005-05-01 08:59:01 -0700 | [diff] [blame] | 10 | #ifdef CONFIG_BUG | 
|  | 11 | #define HAVE_ARCH_BUG | 
| Jeremy Fitzhardinge | 91768d6 | 2006-12-08 02:36:21 -0800 | [diff] [blame] | 12 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 13 | #ifdef CONFIG_DEBUG_BUGVERBOSE | 
| Jeremy Fitzhardinge | 91768d6 | 2006-12-08 02:36:21 -0800 | [diff] [blame] | 14 | #define BUG()								\ | 
|  | 15 | do {								\ | 
|  | 16 | asm volatile("1:\tud2\n"				\ | 
|  | 17 | ".pushsection __bug_table,\"a\"\n"		\ | 
|  | 18 | "2:\t.long 1b, %c0\n"			\ | 
|  | 19 | "\t.word %c1, 0\n"				\ | 
|  | 20 | "\t.org 2b+%c2\n"				\ | 
|  | 21 | ".popsection"				\ | 
|  | 22 | : : "i" (__FILE__), "i" (__LINE__),	\ | 
|  | 23 | "i" (sizeof(struct bug_entry)));		\ | 
|  | 24 | for(;;) ;						\ | 
|  | 25 | } while(0) | 
|  | 26 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 27 | #else | 
| Jeremy Fitzhardinge | 91768d6 | 2006-12-08 02:36:21 -0800 | [diff] [blame] | 28 | #define BUG()								\ | 
|  | 29 | do {								\ | 
|  | 30 | asm volatile("ud2");					\ | 
|  | 31 | for(;;) ;						\ | 
|  | 32 | } while(0) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | #endif | 
| Matt Mackall | c8538a7 | 2005-05-01 08:59:01 -0700 | [diff] [blame] | 34 | #endif | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 35 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | #include <asm-generic/bug.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 | #endif |