Loading...
Note: File does not exist in v3.5.6.
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASM_BUG_H
3#define __ASM_BUG_H
4
5#include <asm/break.h>
6#include <linux/stringify.h>
7
8#ifndef CONFIG_DEBUG_BUGVERBOSE
9#define _BUGVERBOSE_LOCATION(file, line)
10#else
11#define __BUGVERBOSE_LOCATION(file, line) \
12 .pushsection .rodata.str, "aMS", @progbits, 1; \
13 10002: .string file; \
14 .popsection; \
15 \
16 .long 10002b - .; \
17 .short line;
18#define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line)
19#endif
20
21#ifndef CONFIG_GENERIC_BUG
22#define __BUG_ENTRY(flags)
23#else
24#define __BUG_ENTRY(flags) \
25 .pushsection __bug_table, "aw"; \
26 .align 2; \
27 10000: .long 10001f - .; \
28 _BUGVERBOSE_LOCATION(__FILE__, __LINE__) \
29 .short flags; \
30 .popsection; \
31 10001:
32#endif
33
34#define ASM_BUG_FLAGS(flags) \
35 __BUG_ENTRY(flags) \
36 break BRK_BUG
37
38#define ASM_BUG() ASM_BUG_FLAGS(0)
39
40#define __BUG_FLAGS(flags) \
41 asm_inline volatile (__stringify(ASM_BUG_FLAGS(flags)));
42
43#define __WARN_FLAGS(flags) \
44do { \
45 instrumentation_begin(); \
46 __BUG_FLAGS(BUGFLAG_WARNING|(flags)); \
47 instrumentation_end(); \
48} while (0)
49
50#define BUG() \
51do { \
52 instrumentation_begin(); \
53 __BUG_FLAGS(0); \
54 unreachable(); \
55} while (0)
56
57#define HAVE_ARCH_BUG
58
59#include <asm-generic/bug.h>
60
61#endif /* __ASM_BUG_H */