Viewing file: bug.h (1.32 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __ASM_BUG_H #define __ASM_BUG_H
#include <asm/break.h> #include <linux/stringify.h>
#ifndef CONFIG_DEBUG_BUGVERBOSE #define _BUGVERBOSE_LOCATION(file, line) #else #define __BUGVERBOSE_LOCATION(file, line) \ .pushsection .rodata.str, "aMS", @progbits, 1; \ 10002: .string file; \ .popsection; \ \ .long 10002b - .; \ .short line; #define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line) #endif
#ifndef CONFIG_GENERIC_BUG #define __BUG_ENTRY(flags) #else #define __BUG_ENTRY(flags) \ .pushsection __bug_table, "aw"; \ .align 2; \ 10000: .long 10001f - .; \ _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ .short flags; \ .popsection; \ 10001: #endif
#define ASM_BUG_FLAGS(flags) \ __BUG_ENTRY(flags) \ break BRK_BUG
#define ASM_BUG() ASM_BUG_FLAGS(0)
#define __BUG_FLAGS(flags) \ asm_inline volatile (__stringify(ASM_BUG_FLAGS(flags)));
#define __WARN_FLAGS(flags) \ do { \ instrumentation_begin(); \ __BUG_FLAGS(BUGFLAG_WARNING|(flags)); \ instrumentation_end(); \ } while (0)
#define BUG() \ do { \ instrumentation_begin(); \ __BUG_FLAGS(0); \ unreachable(); \ } while (0)
#define HAVE_ARCH_BUG
#include <asm-generic/bug.h>
#endif /* __ASM_BUG_H */
|