|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef _TOOLS_ASM_BUG_H | 
|  | #define _TOOLS_ASM_BUG_H | 
|  |  | 
|  | #include <linux/compiler.h> | 
|  |  | 
|  | #define __WARN_printf(arg...)	do { fprintf(stderr, arg); } while (0) | 
|  |  | 
|  | #define WARN(condition, format...) ({		\ | 
|  | int __ret_warn_on = !!(condition);	\ | 
|  | if (unlikely(__ret_warn_on))		\ | 
|  | __WARN_printf(format);		\ | 
|  | unlikely(__ret_warn_on);		\ | 
|  | }) | 
|  |  | 
|  | #define WARN_ON(condition) ({					\ | 
|  | int __ret_warn_on = !!(condition);			\ | 
|  | if (unlikely(__ret_warn_on))				\ | 
|  | __WARN_printf("assertion failed at %s:%d\n",	\ | 
|  | __FILE__, __LINE__);		\ | 
|  | unlikely(__ret_warn_on);				\ | 
|  | }) | 
|  |  | 
|  | #define WARN_ON_ONCE(condition) ({			\ | 
|  | static int __warned;				\ | 
|  | int __ret_warn_once = !!(condition);		\ | 
|  | \ | 
|  | if (unlikely(__ret_warn_once && !__warned)) {	\ | 
|  | __warned = true;			\ | 
|  | WARN_ON(1);				\ | 
|  | }						\ | 
|  | unlikely(__ret_warn_once);			\ | 
|  | }) | 
|  |  | 
|  | #define WARN_ONCE(condition, format...)	({	\ | 
|  | static int __warned;			\ | 
|  | int __ret_warn_once = !!(condition);	\ | 
|  | \ | 
|  | if (unlikely(__ret_warn_once))		\ | 
|  | if (WARN(!__warned, format)) 	\ | 
|  | __warned = 1;		\ | 
|  | unlikely(__ret_warn_once);		\ | 
|  | }) | 
|  |  | 
|  | #endif /* _TOOLS_ASM_BUG_H */ |