| 
									
										
										
										
											2008-10-22 22:26:29 -07:00
										 |  |  | #ifndef _ASM_X86_BUG_H
 | 
					
						
							|  |  |  | #define _ASM_X86_BUG_H
 | 
					
						
							| 
									
										
										
										
											2007-10-17 17:19:30 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_BUG
 | 
					
						
							|  |  |  | #define HAVE_ARCH_BUG
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_DEBUG_BUGVERBOSE
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-11 11:20:03 +02:00
										 |  |  | #ifdef CONFIG_X86_32
 | 
					
						
							| 
									
										
										
										
											2007-10-17 17:19:30 +02:00
										 |  |  | # define __BUG_C0	"2:\t.long 1b, %c0\n"
 | 
					
						
							| 
									
										
										
										
											2007-10-11 11:20:03 +02:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2008-12-16 11:40:27 +00:00
										 |  |  | # define __BUG_C0	"2:\t.long 1b - 2b, %c0 - 2b\n"
 | 
					
						
							| 
									
										
										
										
											2007-10-17 17:19:30 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-23 01:01:46 -07:00
										 |  |  | #define BUG()							\
 | 
					
						
							|  |  |  | do {								\ | 
					
						
							|  |  |  | 	asm volatile("1:\tud2\n"				\ | 
					
						
							|  |  |  | 		     ".pushsection __bug_table,\"a\"\n"		\ | 
					
						
							|  |  |  | 		     __BUG_C0					\ | 
					
						
							|  |  |  | 		     "\t.word %c1, 0\n"				\ | 
					
						
							|  |  |  | 		     "\t.org 2b+%c2\n"				\ | 
					
						
							|  |  |  | 		     ".popsection"				\ | 
					
						
							|  |  |  | 		     : : "i" (__FILE__), "i" (__LINE__),	\ | 
					
						
							|  |  |  | 		     "i" (sizeof(struct bug_entry)));		\ | 
					
						
							| 
									
										
										
										
											2009-12-04 17:44:51 -08:00
										 |  |  | 	unreachable();						\ | 
					
						
							| 
									
										
										
										
											2008-03-23 01:01:46 -07:00
										 |  |  | } while (0) | 
					
						
							| 
									
										
										
										
											2007-10-17 17:19:30 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2008-03-23 01:01:46 -07:00
										 |  |  | #define BUG()							\
 | 
					
						
							|  |  |  | do {								\ | 
					
						
							|  |  |  | 	asm volatile("ud2");					\ | 
					
						
							| 
									
										
										
										
											2009-12-04 17:44:51 -08:00
										 |  |  | 	unreachable();						\ | 
					
						
							| 
									
										
										
										
											2008-03-23 01:01:46 -07:00
										 |  |  | } while (0) | 
					
						
							| 
									
										
										
										
											2007-10-17 17:19:30 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* !CONFIG_BUG */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm-generic/bug.h>
 | 
					
						
							| 
									
										
										
										
											2012-03-28 18:11:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-22 22:26:29 -07:00
										 |  |  | #endif /* _ASM_X86_BUG_H */
 |